我们的应用程序有一组 Apache 流量服务器,它们将请求发送到负载均衡器,负载均衡器将请求发送到 tomcat 服务器版本 7。
Tomcat 服务器似乎正在响应,但一段时间后,从 Tomcat 到 Apache Traffic Server 有许多 CLOSE_WAIT 套接字。
在重新启动 Tomcat 7 时,这些套接字将关闭。
同时,Traffic Server 上的 CLOSE_WAIT 中没有套接字。
请求您的意见
我们的应用程序有一组 Apache 流量服务器,它们将请求发送到负载均衡器,负载均衡器将请求发送到 tomcat 服务器版本 7。
Tomcat 服务器似乎正在响应,但一段时间后,从 Tomcat 到 Apache Traffic Server 有许多 CLOSE_WAIT 套接字。
在重新启动 Tomcat 7 时,这些套接字将关闭。
同时,Traffic Server 上的 CLOSE_WAIT 中没有套接字。
请求您的意见
你需要明白:
CLOSE-WAIT:本地端点已收到连接终止请求并确认它,例如已执行被动关闭,本地端点需要执行主动关闭才能离开此状态。
TIME-WAIT:本地端点等待最大段生命周期(MSL)的两倍,然后再进入 CLOSED 以确保远程端点收到确认。
您的 Tomcat 已收到连接终止...并且您的 Tomcat 需要执行主动关闭以离开此状态。在您的 Apache Traffic Server 连接中,可能会在 TIME_WAIT 中配置一个短暂的超时,直到它关闭。如果您有连接泄漏,您可以尝试将 Tomcat 更新到最新版本以避免错误并检查您的应用程序以确保释放您的资源。
如果这种状态下的连接数不大,我不会太重视。
了解一些 TCP 状态的链接:
http://benohead.com/tcp-about-fin_wait_2-time_wait-and-close_wait/
我在独立的 Tomcat 上遇到了同样的问题。这是我为解决它所做的:
netstat -ano | find "your_tomcat_port"
和taskkill /pid the_pid /F
lsof -i:your_tomcat_port
和kill -9 the_pid
您可以创建 .bat 或 .sh 脚本。