在activemq中建立了大量的套接字

时间:2017-12-06 07:26:41

标签: java sockets activemq

我遇到的问题是有大量已建立的带有activemq的套接字。

根据ActiveMQ文档,套接字将因不活动而关闭。但是在我的应用程序中,经过一段时间后,由于不活动,我有一个巨大的套接字连接。这是我的设置:

客户端配置的soTimeout 30s,connectionTimeout 10s

经纪商配置将maxInactivityDuration设为30秒

在日志文件中,我遇到以下异常,但我无法理解为什么socket没有按照activemq文档关闭。

  

[WARN] [20 / Nov / 17 23:58:06.473] [运输] - 运输连接   to:tcp://10.227.129.219:34896失败:   org.apache.activemq.transport.InactivityIOException:频道是   对于(> 30000)长也不活动(没有连接尝试):   TCP://10.227.129.219:34896

提到了有效的mq文档here

  

使用默认值;如果没有写入或读取数据   连接30秒,InactivityMonitor启动   InactivityMonitor抛出InactivityIOException并关闭   与连接相关的传输

有关您的信息,我使用的是activemq 5.13.3。以下是netstat命令的快照。

netstat -an | grep 9999
tcp        0      0 X.X.X.X:9999           Y.Y.Y.Y:38200        ESTABLISHED 
tcp        0      0 X.X.X.X:9999           Y.Y.Y.Y:44582        ESTABLISHED 
tcp        0      0 X.X.X.X:9999           Y.Y.Y.Y:41278        ESTABLISHED
... (few hundreds in total) 

1 个答案:

答案 0 :(得分:0)

根据您共享的日志文件,TCP握手完成,然后activemq协议(应用程序级别)正在等待建立连接。由于任何问题(例如网络连接等),无法建立连接。我猜你的tcp keeplive配置已启用。因此,TCP连接没有关闭,应用程序(例如activemq)也没有关闭它。