BT.stats

BT.stats

BT.stats

功能

返回当前 BT 进程的运行期资源统计,用于定位 I/O 运行边界、后台任务、定时器、网络服务和 VM 缓存状态。

语法

参数

参数类型必填默认值说明
-不需要参数。

返回值

类型说明
Object返回运行期资源统计对象。字段见下方“返回对象字段”。

返回对象字段

字段类型必定存在说明
uptimeInt当前 BT 进程已运行秒数,按当前 Unix 时间戳减 start_time 计算。
threadsInt当前系统可用并行线程数。读取失败时返回 1
start_timeIntBT 进程启动时间戳,单位秒。
ioObject进程级 I/O runtime 和 blocking pool 的配置、活动数、完成数、拒绝数、超时数。
taskObject后台 task 执行器是否启动、队列上限、工作线程、排队数、运行数、完成数、拒绝数。
timerObject定时器运行时是否启动、活动定时器数、调度堆条目数、上限和单 VM 事件队列上限。
netObject网络 Web 服务数、事件型服务数、有界事件队列、连接和消息资源上限。
httpObjectHTTP client 池配置、条目数、命中数、淘汰数、创建失败数和慢调用数。
mysqlObjectMySQL 普通查询连接池配置、DSN 分组数、连接数、命中数、淘汰数、创建失败数和慢调用数。
bytesObjectBytes 缓冲上限和配置错误。
cacheObject当前线程 include 编译缓存和模板片段缓存条目数、字节数、命中、失效和淘汰统计。
permissionObject权限配置快照、当前实际允许能力和权限拒绝次数。

I/O 默认配置:

环境变量默认值说明
BT_IO_WORKERSCPU 线程数,最大 64共享 Tokio runtime 工作线程数。
BT_IO_BLOCKING_WORKERSCPU 线程数,最大 64有界 blocking pool 工作线程数。
BT_IO_BLOCKING_QUEUE256,最大 8192blocking pool 等待队列长度。
BT_IO_TIMEOUT_MS30000默认同步等待超时时间,单位毫秒。
BT_IO_SHUTDOWN_TIMEOUT_MS1000blocking pool 关闭等待时间,单位毫秒。

io 主要字段:

字段类型必定存在说明
async_runtime_startedBool共享 Tokio runtime 是否已经初始化。
async_activeInt当前正在执行的异步 I/O 任务数量。
async_completedInt已完成的异步 I/O 任务数量。
async_failedInt执行失败的异步 I/O 任务数量。
async_timeoutsInt同步等待异步任务结果时发生超时的次数。
async_rejectedInt因运行时关闭或调度失败被拒绝的异步任务数量。
blocking_pool_startedBool有界 blocking pool 是否已经初始化。
blocking_queuedInt当前排队等待执行的 blocking 任务数量。
blocking_runningInt当前正在执行的 blocking 任务数量。
blocking_completedInt已完成的 blocking 任务数量。
blocking_rejectedInt因队列满或线程池关闭被拒绝的 blocking 任务数量。
blocking_timeoutsIntblocking 任务等待结果超时次数。
blocking_shutdownBoolblocking pool 是否已经进入关闭状态。
configObjectI/O 配置快照,包含 async_workersblocking_workersblocking_queue_limitdefault_timeout_msshutdown_timeout_ms

io.config 字段:

字段类型必定存在说明
async_workersInt共享 Tokio runtime 工作线程数。
blocking_workersInt有界 blocking pool 工作线程数。
blocking_queue_limitIntblocking pool 等待队列长度上限。
default_timeout_msInt默认同步等待超时时间,单位毫秒。
shutdown_timeout_msIntblocking pool 关闭等待时间,单位毫秒。

task 主要字段:

字段类型必定存在说明
executor_startedBool后台 task 执行器是否已经初始化。
queue_limitInt后台 task 等待队列长度上限。
workersInt后台 task worker 数量。
queuedInt当前排队等待执行的 task 数量。
runningInt当前正在执行的 task 数量。
completedInt已完成的 task 数量。
rejectedInt因队列满或执行器关闭被拒绝的 task 数量。

timer 主要字段:

字段类型必定存在说明
runtime_startedBool定时器运行时是否已经初始化。
activeInt当前活动定时器数量。
queuedInt当前调度堆中的定时器条目数量。
limitInt当前进程允许的活动定时器数量上限。
event_queue_limitInt单个 VM 定时器事件队列长度上限。

net 默认配置:

环境变量默认值说明
BT_NET_EVENT_QUEUE4096,最大 65536TCP、UDP、WebSocket 后台事件投递到 VM 的有界队列长度。
BT_NET_CONNECTION_LIMIT4096,最大 65536单协议连接或 socket 数量上限。
BT_NET_MESSAGE_LIMIT1048576,最大 16777216单条 TCP/UDP/WebSocket 消息字节上限。
BT_NET_WRITE_QUEUE1024,最大 8192单个 TCP/WebSocket 连接的待写命令队列长度。
BT_NET_IDLE_TTL_MS0TCP/WebSocket 连接空闲关闭时间,单位毫秒;0 表示不因空闲主动关闭。

net 主要字段:

字段类型必定存在说明
runtime_startedBool网络运行时是否已经初始化。
web_servicesInt当前由 net.listen({type:'web'}) 或 Web 运行器持有的 Web 服务数量。
event_servicesInt当前 TCP、UDP、WebSocket 事件型服务数量。
event_queue_boundedBool是否启用有界网络事件队列。当前固定为 true
event_queue_limitInt/Empty网络事件队列上限。未启用事件队列时为 empty
event_queue_queuedInt当前等待 VM 分发的网络事件数量。
event_queue_sentInt已成功投递到 VM 的网络事件数量。
event_queue_rejectedInt因队列满或通道关闭被拒绝的网络事件数量。
connection_limitInt单协议连接或 socket 数量上限。
message_limitInt单条消息字节上限。
write_queue_limitInt单连接写队列上限。
idle_ttl_msIntTCP/WebSocket 连接空闲关闭时间,单位毫秒;0 表示关闭该策略。

Bytes 默认配置:

环境变量默认值说明
BT_BYTES_LIMIT16777216,最大 67108864单个 Bytes 缓冲最大字节数。

bytes 主要字段:

字段类型必定存在说明
limitInt单个 Bytes 缓冲上限,单位字节。
config_errorString/EmptyBytes 配置错误文本;无错误时为 empty

cache 主要字段:

字段类型必定存在说明
compiled_file_entriesInt当前线程 include/Web 入口文件编译缓存条目数。
compiled_file_limitInt当前线程文件编译缓存条目上限。
compiled_file_bytesInt当前线程文件编译缓存估算字节数。
compiled_file_bytes_limitInt当前线程文件编译缓存估算字节上限。
compiled_file_hitsInt文件编译缓存命中次数。
compiled_file_missesInt文件编译缓存未命中次数。
compiled_file_invalidationsInt文件元信息、源码指纹、源码模式、编译配置或字节码格式变化导致的失效次数。
compiled_file_evictionsInt文件编译缓存因条目数或字节数达到上限而淘汰的次数。
compiled_file_fingerprint_checksInt对最近修改文件执行内容指纹复核的次数。
template_fragment_entriesInt当前线程模板片段编译缓存条目数。
template_fragment_limitInt当前线程模板片段缓存条目上限。
template_fragment_bytesInt当前线程模板片段缓存估算字节数。
template_fragment_bytes_limitInt当前线程模板片段缓存估算字节上限。
template_fragment_hitsInt模板片段缓存命中次数。
template_fragment_missesInt模板片段缓存未命中次数。
template_fragment_evictionsInt模板片段缓存因条目数或字节数达到上限而淘汰的次数。
template_fragment_bypassedInt模板片段过大或超过缓存容量时跳过缓存的次数。
template_fragment_max_code_bytesInt单个模板片段允许缓存的最大源码字节数。

permission 默认配置:

环境变量默认值说明
BT_PERMISSION_ALLOW未配置允许能力列表。配置后只允许列表内能力;支持 fsprocessnethttpmysqldeviceenvdesktopallnone
BT_PERMISSION_DENY未配置拒绝能力列表。拒绝列表优先级高于允许列表。

permission 主要字段:

字段类型必定存在说明
deniedInt当前进程内权限拒绝次数。
configObject权限配置快照。字段见下方 permission.config 字段

permission.config 字段:

字段类型必定存在说明
allow_configuredBool是否显式配置了 BT_PERMISSION_ALLOW
allowArray允许列表中的能力名称;未配置时返回全部能力。
denyArray拒绝列表中的能力名称。
allowedArray当前实际允许的能力名称。
config_errorString/Empty权限配置错误文本;没有错误时为 empty

HTTP client 池默认配置:

环境变量默认值说明
BT_HTTP_CLIENT_POOLtrue是否启用 HTTP client 池。
BT_HTTP_CLIENT_POOL_LIMIT32,最大 1024最多保留的 client 配置分组数量。
BT_HTTP_CLIENT_IDLE_TTL_MS300000client 空闲保留时间,单位毫秒;0 表示不按空闲时间淘汰。
BT_HTTP_SLOW_MS0慢 HTTP 调用日志阈值,单位毫秒;0 表示关闭。

http 主要字段:

字段类型必定存在说明
pool_startedBoolHTTP client 池是否已经初始化。
entriesInt当前池内 client 条目数。
hitsInt池命中次数。
missesInt池未命中次数。
createdIntclient 创建次数。
evictedIntclient 淘汰次数。
bypassedInt因关闭池或 Cookie 存储语义而绕过池的次数。
build_failedIntclient 创建失败次数。
slow_callsInt超过 BT_HTTP_SLOW_MS 的慢调用次数。
configObject当前 HTTP client 池配置。字段见下方 http.config 字段

http.config 字段:

字段类型必定存在说明
enabledBool是否启用 HTTP client 池。
pool_limitInt最多保留的 client 配置分组数量。
idle_ttl_msIntclient 空闲保留时间,单位毫秒;0 表示不按空闲时间淘汰。
slow_msInt慢 HTTP 调用日志阈值,单位毫秒;0 表示关闭。
config_errorString/EmptyHTTP client 池配置错误文本;没有错误时为 empty

MySQL 普通查询连接池默认配置:

环境变量默认值说明
BT_MYSQL_POOLtrue是否启用普通查询全局连接池。
BT_MYSQL_POOL_LIMIT16,最大 256最多保留的 DSN 分组数量。
BT_MYSQL_POOL_MIN_CONNECTIONS0每个连接池最小连接数。
BT_MYSQL_POOL_MAX_CONNECTIONS8,最大 1024每个连接池最大连接数。
BT_MYSQL_POOL_IDLE_TTL_MS300000连接池空闲保留时间,单位毫秒;0 表示不按空闲时间淘汰。
BT_MYSQL_CONNECT_TIMEOUT_MS5000获取连接的超时时间,单位毫秒。
BT_MYSQL_QUERY_TIMEOUT_MS30000单次 SQL 调用同步等待超时时间,单位毫秒。
BT_MYSQL_SLOW_MS0慢 MySQL 调用日志阈值,单位毫秒;0 表示关闭。

mysql 主要字段:

字段类型必定存在说明
pool_startedBoolMySQL 全局连接池是否已经初始化。
entriesInt当前池内 DSN 分组数量,不包含 DSN 明文。
connectionsInt当前 SQLx 池中已打开连接总数。
idle_connectionsInt当前 SQLx 池中空闲连接总数。
hitsInt池命中次数。
missesInt池未命中次数。
createdInt池创建次数。
evictedInt池淘汰次数。
bypassedInt因关闭全局池而绕过池的次数。
build_failedInt池创建失败次数。
slow_callsInt超过 BT_MYSQL_SLOW_MS 的慢调用次数。
transactions_activeInt当前活动事务数量。
transactions_startedInt事务开始次数。
transactions_committedInt事务提交次数。
transactions_rolled_backInt事务回滚次数,包含 close() 对活动事务执行的默认回滚。
transactions_closedIntclose() 成功关闭活动事务次数。
transactions_failedInt事务开始、提交、回滚或关闭失败次数。
configObject当前 MySQL 池配置。字段见下方 mysql.config 字段

mysql.config 字段:

字段类型必定存在说明
enabledBool是否启用普通查询全局连接池。
pool_limitInt最多保留的 DSN 分组数量。
min_connectionsInt每个连接池最小连接数。
max_connectionsInt每个连接池最大连接数。
idle_ttl_msInt连接池空闲保留时间,单位毫秒;0 表示不按空闲时间淘汰。
connect_timeout_msInt获取连接的超时时间,单位毫秒。
query_timeout_msInt单次 SQL 调用同步等待超时时间,单位毫秒。
slow_msInt慢 MySQL 调用日志阈值,单位毫秒;0 表示关闭。
config_errorString/EmptyMySQL 池配置错误文本;没有错误时为 empty

代码示例

注意事项

  • BT.stats() 按需读取统计,不会在 VM 普通指令执行时维护重型计数。
  • cache 统计只反映当前线程的 VM 线程本地缓存;Web 多 worker 场景下,每个 worker 会各自维护缓存。
  • 文件编译缓存稳定命中时只检查 mtime、长度和版本;最近修改的文件会低频复核内容指纹,避免同长度快速改写后执行旧字节码。
  • net.event_queue_rejected 大于 0 表示网络事件队列发生过满载,TCP/WebSocket 消息事件会触发连接关闭,UDP 报文会被丢弃。
  • http.bypassed 增长通常表示关闭了 HTTP client 池,或请求启用了 cookie_store(true)
  • mysql.entriesmysql.connections 和事务统计不包含 DSN 明文或密码;连接失败和慢调用日志也会避免输出 DSN 密码。
  • bytes.limit 控制脚本和 I/O 边界能创建的单个 Bytes 最大长度,避免二进制缓冲无上限增长。
  • permission.denied 大于 0 表示脚本触发过被当前配置拒绝的能力;权限拒绝是明确运行时错误,不会返回 empty
  • I/O 环境变量配置错误会在第一次使用相关 I/O 能力时报错,不会静默回退到危险默认值。