![Windows Server 2008 和 SQL - TIME_WAIT 中有许多连接](https://linux22.com/image/526345/Windows%20Server%202008%20%E5%92%8C%20SQL%20-%20TIME_WAIT%20%E4%B8%AD%E6%9C%89%E8%AE%B8%E5%A4%9A%E8%BF%9E%E6%8E%A5.png)
当我运行 netstat 时,我得到以下信息:
TCP xxxx:65524 65.55.11.162:80 TIME_WAIT 0
此时 netstat 中有 13941 行这样的信息。
服务器运行的是 Windows 2008 和 SQL Server 2008。
任务管理器和进程管理器没有显示任何异常。服务器正常运行时间大概是几个月。
您知道可能是什么原因造成的吗?
答案1
TIME_WAIT
是用于确保连接完全关闭的 TCP 状态。由于最后一个表示“我已完成!”的数据包可能会被丢弃,因此 TCP 连接会等待一段时间,以防另一端在实际切换到该CLOSED
状态之前尝试重新发送某些内容。
看起来您的服务器正在快速打开和关闭与65.55.11.162
Web 服务器的连接,比TIME_WAIT
允许服务器关闭连接和转储套接字的延迟更快。根据服务器可用的资源,这可能会耗尽可用的套接字或内存并导致性能问题。如果您没有看到任何性能问题,我只会留意它;连接应该在几分钟后过期。如果问题仍然存在,请考虑调查源应用程序的配置。您可以使用显示netstat
哪个进程/PID 拥有套接字(netstat -p
在我的 Linux 机器上,在 Windows2008 上可能不一样)。
编辑:进一步调查表明这与“Telligent Community”有关,这是您在系统上安装的应用程序吗?
答案2
您知道可能是什么原因造成的吗?
互联网服务器?想过互联网吗?IIS 基于 TCP。Darth Andoid 对此有技术解释。蜘蛛可能是原因。
SQL?大量打开/关闭的连接,没有连接池。
答案3
原来是 Amazon EC2 的问题 - 有时主机会报告未来几年的时间,导致套接字不会超时并被清理。这个问题已修复,不再是问题。