v1.0.5
修复
修掉一类「幽灵在线用户」:节点空闲、实际 0 连接,面板却一直显示有人在线。
根因在会话生命周期:一条连接认证后即登记在线,只有会话循环返回后才注销
(retire)。而当会话任务被取消——面板下发画像变化触发监听重建、SIGHUP
热加载、或会话 panic——serve() 的 future 被直接丢弃,那行 retire 根本执行
不到,在线条目就永久留在登记表;节点每 60s 把它当成在线上报一次,面板持续显示。
v1.0.4 的服务端保活只覆盖「客户端静默掉线」,覆盖不到「任务被取消」这条路,所以
会出现「节点 0 连接、面板仍显示 1 在线」。
现将在线登记改成 RAII 守卫:登记返回一个守卫,其析构(Drop)时执行注销。
无论会话正常结束、被取消还是 panic,只要守卫离开作用域就必然注销——幽灵从
机制上不再可能产生。残留流量也在 relay 收尾之后一并结转,比原来的手动注销更准。
升级前遗留的幽灵会随节点这次重启清空;此后不再新增。
升级
bash install.sh配置原样保留,只换二进制并重启。建议所有开了 report_online 的节点升级——
这个泄漏对它们通用,只是要发生一次「监听重建/热加载」且当时有活跃会话才会触发。
本版累计包含(相对更早版本)
- v1.0.4:H2 服务端上行窗口 64KB→4MB(上行吞吐大幅提升)+ 扩窗内存预算调大;
- v1.0.3:服务端保活回收「静默失效但没收到 RST」的连接(防另一类幽灵)。
产物
| 文件 | 架构 |
|---|---|
dbk-node-x86_64-unknown-linux-gnu.tar.gz |
x86_64 / amd64 |
dbk-node-aarch64-unknown-linux-gnu.tar.gz |
aarch64 / arm64 |
最低 glibc 2.28(Debian 10+ / Ubuntu 20.04+)。