我们有一个服务器应用程序,它面临着大约4000个连接的TCP耗尽问题.这将每3或4周(大约)发生.创建此服务器应用程序的供应商在检查netstat -b的输出后告诉我们,即使客户端已经丢弃,某些连接仍保持打开状态.
我被赋予了调查特定客户端应用程序未正确关闭TCP连接的原因的任务.我相信如果客户端计算机被关闭,它可能无法从服务器报告仍然与该客户端建立TCP连接.不幸的是,我找不到任何信息来验证我的观点.我不想再浪费时间来调查一个我认为甚至不成问题的潜在问题.
tldr;
服务器是否可以报告与已关闭的计算机建立的连接?
除了在传输数据的一方之外,TCP不会检测到死连接.调用TCP堆栈的应用程序代码负责执行此操作.这涉及什么协议? (TCP之上的那个.)
这是一个非常丑陋的“解决方案”,但你可以启用TCP keepalives.这是more in this article.