← 中文资源

简体中文版本

WebSocket 以关闭码 1001 going away 断开客户端

通过识别计划重启、空闲代理与部署变更,诊断 WebSocket 的 1001 关闭。

阅读英文原文

症状

WebSocket 客户端以关闭码 1001 going away 断开,常按固定节奏或在部署前后出现。该码表示某端点有意关闭连接,指向服务器重启、部署期间的 drain,或代理在超时后关闭了空闲连接。与异常关闭不同,1001 通常能在日志或配置中找到有意为之的原因。

诊断

把关闭时间与重启、部署日志对齐;检查代理的读写超时;加入短于最小空闲超时的保活 ping。

journalctl --since "10 min ago" | grep -i "shutdown\|restart"

根因

连接被以 going-away 码关闭,因为服务器、代理或编排器有意结束它,或为重启,或因其空闲超过超时。

修复

发送短于最小空闲超时的保活 ping;按需提高代理超时;实现带退避的客户端重连并让服务端优雅 drain,使部署只造成短暂中断。

验证

跨一次部署与一段空闲期观察连接,确认其保持或迅速重连且不丢消息。会话稳定或快速恢复即证明修复。

常见陷阱

盲目提高所有超时而不加保活会让中间层继续回收空闲连接;应两者配合。