BT.stats
BT.stats
功能
返回当前 BT 进程的运行期资源统计,用于定位 I/O 运行边界、后台任务、定时器、网络服务和 VM 缓存状态。
语法
BT.stats()
参数
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| 无 | - | 否 | 无 | 不需要参数。 |
返回值
| 类型 | 说明 |
|---|---|
| Object | 返回 uptime、threads、start_time、io、task、timer、net、cache。 |
主要字段:
| 字段 | 说明 |
|---|---|
| io | 进程级 I/O runtime 和 blocking pool 的配置、活动数、完成数、拒绝数、超时数。 |
| task | 后台 task 执行器是否启动、队列上限、工作线程、排队数、运行数、完成数、拒绝数。 |
| timer | 定时器运行时是否启动、活动定时器数、调度堆条目数、上限和单 VM 事件队列上限。 |
| net | 网络 Web 服务数、事件型服务数、有界事件队列、连接和消息资源上限。 |
| cache | 当前线程 include 编译缓存和模板片段缓存条目数与上限。 |
I/O 默认配置:
| 环境变量 | 默认值 | 说明 |
|---|---|---|
| BT_IO_WORKERS | CPU 线程数,最大 64 | 共享 Tokio runtime 工作线程数。 |
| BT_IO_BLOCKING_WORKERS | CPU 线程数,最大 64 | 有界 blocking pool 工作线程数。 |
| BT_IO_BLOCKING_QUEUE | 256,最大 8192 | blocking pool 等待队列长度。 |
| BT_IO_TIMEOUT_MS | 30000 | 默认同步等待超时时间,单位毫秒。 |
| BT_IO_SHUTDOWN_TIMEOUT_MS | 1000 | blocking pool 关闭等待时间,单位毫秒。 |
net 默认配置:
| 环境变量 | 默认值 | 说明 |
|---|---|---|
| BT_NET_EVENT_QUEUE | 4096,最大 65536 | TCP、UDP、WebSocket 后台事件投递到 VM 的有界队列长度。 |
| BT_NET_CONNECTION_LIMIT | 4096,最大 65536 | 单协议连接或 socket 数量上限。 |
| BT_NET_MESSAGE_LIMIT | 1048576,最大 16777216 | 单条 TCP/UDP/WebSocket 消息字节上限。 |
| BT_NET_WRITE_QUEUE | 1024,最大 8192 | 单个 TCP/WebSocket 连接的待写命令队列长度。 |
| BT_NET_IDLE_TTL_MS | 0 | TCP/WebSocket 连接空闲关闭时间,单位毫秒;0 表示不因空闲主动关闭。 |
net 主要字段:
| 字段 | 说明 |
|---|---|
| event_queue_bounded | 是否启用有界网络事件队列。当前固定为 true。 |
| event_queue_limit | 网络事件队列上限。 |
| event_queue_queued | 当前等待 VM 分发的网络事件数量。 |
| event_queue_sent | 已成功投递到 VM 的网络事件数量。 |
| event_queue_rejected | 因队列满或通道关闭被拒绝的网络事件数量。 |
| connection_limit | 单协议连接或 socket 数量上限。 |
| message_limit | 单条消息字节上限。 |
| write_queue_limit | 单连接写队列上限。 |
| idle_ttl_ms | TCP/WebSocket 连接空闲关闭时间,0 表示关闭该策略。 |
代码示例
stats = BT.stats() result = stats.net.event_queue_bounded // 输出:true print result
注意事项
-
BT.stats()按需读取统计,不会在 VM 普通指令执行时维护重型计数。 -
cache统计只反映当前线程的 VM 线程本地缓存。 -
net.event_queue_rejected大于 0 表示网络事件队列发生过满载,TCP/WebSocket 消息事件会触发连接关闭,UDP 报文会被丢弃。 - I/O 环境变量配置错误会在第一次使用相关 I/O 能力时报错,不会静默回退到危险默认值。