我有一台运行OA系统的tomcat服务器。最近我发现服务器间歇性地没有响应,甚至停止提供静态资源。
当它发生时,服务器不会抛出异常,也不会抛出完整的GC。
唯一奇怪的是netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
的输出,结果显示tomcat进程在CLOSE_WAIT
状态下拥有大量TCP连接。
这是输出:
TIME_WAIT 85
CLOSE_WAIT 1110
SYN_SENT 1
FIN_WAIT2 69
ESTABLISHED 207
这是命令lsof -p 27564
java 27564 username 284u IPv6 752174883 0t0 TCP myip:9090->myip:10689 (CLOSE_WAIT)
java 27564 username 285u IPv6 752174887 0t0 TCP myip:9090->myip:10691 (CLOSE_WAIT)
java 27564 username 286u IPv6 752174894 0t0 TCP myip:9090->myip:10693 (CLOSE_WAIT)
java 27564 username 287u IPv6 752174891 0t0 TCP myip:9090->myip:10692 (CLOSE_WAIT)
java 27564 username 288u IPv6 752174900 0t0 TCP myip:9090->myip:10695 (CLOSE_WAIT)
java 27564 username 289u IPv6 752174897 0t0 TCP myip:9090->myip:10694 (CLOSE_WAIT)
java 27564 username 290u IPv6 752175319 0t0 TCP myip:9090->myip:10857 (CLOSE_WAIT)
java 27564 username 291u IPv6 752174903 0t0 TCP myip:9090->myip:10697 (CLOSE_WAIT)
java 27564 username 292u IPv6 752174909 0t0 TCP myip:9090->myip:10698 (CLOSE_WAIT)
java 27564 username 293u IPv6 752174912 0t0 TCP myip:9090->myip:10700 (CLOSE_WAIT)
java 27564 username 294u IPv6 752174916 0t0 TCP myip:9090->myip:10701 (CLOSE_WAIT)
这些端口(10689,10691 ...)拥有相同的java进程。
最奇怪的事情是六七分钟后,一切都恢复正常。
我不明白为什么在一个进程中有TCP连接?
可以向我解释一下吗?