Bitcoin Core getnettotals 返回累计收发字节和上传目标周期。本文说明双点差分、重启归零、时间对齐、限额状态及监控停止线,避免把累计量误当实时速率。
getnettotals 提供的是节点自运行以来的累计收发字节,以及上传目标周期状态。监控系统要得到速率,必须用时间对齐的两个样本做差;单次 totalbytesrecv 再大,也不能说明当前网络繁忙。
累计字节为什么不是实时带宽
getnettotals 返回网络流量信息,包括累计接收字节、累计发送字节和当前系统时间。 单个样本只能回答“自计数基线以来累计多少”,不能回答“现在每秒多少”。
bitcoin-cli getnettotals
原始样本至少保存 totalbytesrecv、totalbytessent、timemillis、节点启动标识和完整 uploadtarget。
用两个样本构造收发速率
recv_rate = (recv_B - recv_A) / ((time_B - time_A) / 1000)
sent_rate = (sent_B - sent_A) / ((time_B - time_A) / 1000)
totalbytesrecv 与 totalbytessent 是累计计数,速率必须用两个采样点的差值除以时间差计算。 时间差必须为正,两个字节差也不得为负。单位先算 bytes/s,再在显示层换算,避免 MB 与 MiB 混用。
| 字段 | 计算角色 | 异常分支 |
|---|---|---|
| totalbytesrecv | 累计接收字节 | 两点差分后才得到接收速率 |
| totalbytessent | 累计发送字节 | 重启后可能回退或归零 |
| timemillis | 节点给出的系统毫秒时间 | 与采集器时钟共同校验 |
| uploadtarget | 周期、目标、已发送和达到状态 | 不是下载限额或瞬时带宽 |
uploadtarget周期字段怎么联读
- 保存节点身份、启动时间和第一组累计计数。
- 按固定间隔取得第二组计数与 timemillis。
- 用字节差除以秒差分别计算收发速率。
- 检测负差值、时间倒退和节点重启事件。
- 将周期上传目标与瞬时速率分成两张图。
第一次样本 sent 为九百兆字节,第二次为九百零一兆字节,相隔十秒,发送速率来自一兆字节的差,而不是九百零一兆。若第二次变成一百兆,不能计算负速率;它更可能表示节点重启、数据目录变化或计数基线失效。
节点重启或计数回退会破坏差分基线,监控应把负差值标为重置而不是负流量。 计数回退后关闭上一段时间序列,在新启动标识下建立 A 点;跨重启平均会制造负流量和错误带宽。
重启与计数回退怎样切断基线
返回还包含 uploadtarget 对象,用于描述上传目标周期、目标、周期内已发送量和是否达到目标。
uploadtarget 的周期长度、目标字节、周期内发送量、剩余时间与 reached 联读。它描述上传目标控制,不等同当前带宽、下载限额或网络连通性。
流量面板的错误报警
- 把累计发送字节标成每秒速率。
- 使用采集间隔而不检查 timemillis。
- 负差值继续进入平均值。
- 把 uploadtarget reached 等同网络断开。
仪表盘将累计量、差分速率、周期目标和系统网卡流量放在四个卡片。告警也分开命名,避免 reached 触发“节点离线”。
采样公式卡和网络规范
以十秒间隔采集六组样本,中途在测试环境重启节点。复核者独立计算收发速率,标出重启后的新基线,并解释 uploadtarget 的周期状态;任何负速率或跨重启平均都判为错误。
RPC 流量是 Bitcoin 节点视角,不包含代理封装、TLS、系统其他进程或云平台计费全部开销。容量规划应再结合网卡、代理和宿主机指标。
采样器应使用单调时钟计算本地间隔,同时保留 RPC 的 timemillis 做漂移检查。若两者偏差超过阈值,该区间标记不可用而不是强行校正。容量规划再把 Bitcoin RPC 速率与宿主网卡、代理出口和云计费字节对齐,解释协议负载与实际成本之间的差异。
尚需验证:出口计费、代理流量和系统层重传不一定等于 Bitcoin Core 自身累计字节,需要网络设备指标交叉核验。
- getnettotals 依据:Bitcoin Core 31 getnettotals
- getnettotals 依据:Bitcoin Core 31 RPC Index
连接与地址背景 Bitcoin节点连接检查、地址管理库存、节点样本抽取。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。