2

我每两个月左右就会遇到一个问题。我的 activemq 服务器死了,日志充满了 SocketExceptions。

我有一个使用 stomp 向 ActiveMQ 发送消息的 PHP 应用程序和一个使用消息的 Java 应用程序。

我在另一台服务器上有activemq,在发送/消费消息时只使用java应用程序,它从来没有像这样失败过。我认为 Stomp 有问题。

stomp 代码非常基本,不会发送任何奇怪的东西。仅设置了消息属性的消息。stomp 代码在每条消息发送后关闭连接。

我看过 lsof ,那里没有任何问题。

但是 netstat 确实有很多:

tcp6 0 0 127.0.0.1:61616 127.0.0.1:46280 CLOSE_WAIT

ActiveMQ 日志显示了很多这样的

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、Stomp 修订版 43

4

1 回答 1

2

似乎你在你的java程序中打开了很多连接,然后你正在点击你的ulimit -n。使用后关闭连接或使用连接池。

作为一种解决方法,您可以通过 sysctl 提高打开文件的限制,请参阅此处的教程

于 2011-04-28T12:21:22.130 回答