You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在服务器端检测HTTP客户端是否已断开连接

关于TCP连接重置(Connection Reset)的疑问解答

Connection Reset的发送方:客户端和服务器都可能发送

TCP的connection reset(RST)是异常关闭连接的信号,并非只有服务器会发送:

  • 常用HTTP客户端(比如浏览器、Python的requests库)在特定场景下会主动发送RST包:比如浏览器强制关闭正在加载的标签页、Python程序通过底层socket调用强制重置连接时。
  • 另外,当客户端正常发送FIN包关闭连接后,如果服务器仍继续向该连接写数据,客户端会返回RST包,告知服务器连接已失效。

客户端异常终止时的服务器检测逻辑

分不同场景来看:

  • Python程序被强制终止(如kill -9、任务管理器强制结束):操作系统会回收进程的所有资源,包括打开的TCP socket,此时操作系统会自动向服务器发送RST包,服务器收到后即可知晓连接已断开,停止计算。
  • 客户端电脑崩溃/断电、突然断网:客户端无法向服务器发送任何数据包(包括RST或FIN),服务器此时收不到断开信号,只能依赖TCP保活机制或应用层自定义的心跳检测来发现连接失效,进而停止无用计算。

服务器优化建议

为了尽可能避免无用计算,建议同时结合两种检测方式:

  • 监听TCP连接的RST/FIN信号,一旦收到立即终止对应计算任务;
  • 启用TCP保活(可通过操作系统配置或应用层代码设置),或在应用层实现心跳机制,覆盖客户端无法主动发送断开信号的场景。

内容的提问来源于stack exchange,提问作者glades

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 14:28:16