参考这两篇文章:
https://huoding.com/2016/01/19/488
http://blog.csdn.net/yu616568/article/details/44677985
我的现象是nginx--tomcat之间有大量CLOSE_WAIT。
按文章的理解,应该是tomcat程序有问题,引起堵塞。
调用者超时后,主动断开连接,发了FIN包过来,服务器回复ACK,进入CLOSE_WAIT状态。
下一步,应该是服务器程序主动关闭,也就是发送FIN给客户端,
但是由于程序堵塞着呢,导致没发送FIN,一直处于CLOSE_WAIT状态。
所以,根源还是程序问题,查找程序问题是关键。
-------------------------- 结果发现是ActiveMq消息发送者,应该是被憋死了。
大概过程是:new一个task,扔到线程池跑,
task里就是JmsTemplate给mq服务器发消息,但是由于是持久化的,
mq服务器处理慢,导致task执行完可能要10秒。
------------- 但是task扔线程池应该是异步操作,不应该把主线程弄死啊~~
没想明白,也没去重现它,直接换kafuka了~~
|