v1.0.9 — 幽灵在线根因二:载体写永久挂起导致会话不回收
修复
面板在线数在客户端断开后一直不归零(幽灵在线)——根因二:载体写永久挂起
v1.0.8 修好了保活计时被下行重置的问题,但线上实测会话仍不回收。抓到更底层的根因:
- 现象:客户端断开后,节点侧没有一条入站连接到监听口,却仍攥着十余条出站
中继(含 Google FCM:5228),在线上报连续 7 分钟以上恒为 1。 - 根因:H2 载体的
poll_write在发送窗口耗尽时依赖poll_capacity;对端静默
消失后永不回WINDOW_UPDATE,poll_capacity便永久 Pending。下行中继(安卓
FCM 推送、浏览器长连接)先把发送窗口写空,客户端随后断开——此后任何一次载体写
(下行帧或保活 Ping)都永久挂起,把会话读写循环整个钉死:保活探测再也轮不到、
会话永不回收、每个上报周期都被当成在线。 - 修复:给服务端的载体写加超时上界。写在界内完不成即判定载体静默失效、结束
会话循环,让注销得以运行。健康客户端毫秒级排空窗口、永不触界;只连着不排空的
已死连接才被回收。客户端行为不变。
影响
- 客户端无论正常还是异常(强杀/断网)断开,且即便仍有 FCM/浏览器等下行中继,
面板在线数都会在约 2~3 分钟内归零。 - v1.0.8 只修了两个根因中的一个;本版补上第二个,两者叠加才是完整修复。
升级
bash install.sh产物
| 文件 | 架构 |
|---|---|
dbk-node-x86_64-unknown-linux-gnu.tar.gz |
x86_64 / amd64 |
dbk-node-aarch64-unknown-linux-gnu.tar.gz |
aarch64 / arm64 |