我每两个月左右就遇到一个问题。我的activemq服务器死了,日志已满SocketExceptions。
我有一个使用stomp的PHP应用程序向ActiveMQ发送消息 消费消息的Java应用程序。
我在另一台服务器上有activemq,在发送/使用消息时只使用了java应用程序,而且从未像这样失败过。我觉得有一些东西 Stomp错了。
stomp代码非常基本,不会发送奇怪的东西。仅设置消息属性的消息。在发送每条消息后,stomp代码会关闭连接。
我看过lsof,那里没有任何故障。
但是,netstat确实有很多:tcp6 0 0 127.0.0.1:61616 127.0.0.1:46280 CLOSE_WAIT
ActiveMQ Log显示了很多这个
2011-04-28 12:43:09,819 |错误| 无法接受连接: java.net.SocketException:太多了 打开文件| org.apache.activemq.broker.TransportConnector | ActiveMQ传输服务器: TCP://0.0.0.0:61616
我正在使用:
ActiveMQ 5.4.2, Tomcat 6.0.20, Debian 5.0.3, PHP 5.2.6, 重踏版本43
答案 0 :(得分:2)
似乎你在java程序中打开了很多连接,然后你正在打你的ulimit -n。使用后关闭连接或使用连接池。
作为wourkaround,您可以通过sysctl提高打开文件的限制,请参阅tutorial here。