ActiveMQ 套接字异常
我每两个月左右就会遇到一个问题。我的 activemq 服务器死掉了,日志中充满了 SocketExceptions。
我有一个使用 stomp 向 ActiveMQ 发送消息的 PHP 应用程序 用于使用消息的 Java 应用程序。
我在另一台服务器上有 activemq,在发送/消费消息时仅使用 java 应用程序,并且它从未像这样失败过。我觉得有一些东西 践踏错了。
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, 雄猫6.0.20, Debian 5.0.3, PHP 5.2.6, Stomp 修订版 43
I'm running into a problem every two months or so. My activemq server dies and the log is full with SocketExceptions.
I have a PHP application using stomp to send messages to ActiveMQ and
a Java application to consume the messages.
I have activemq on another server where only java applications are used when sending/consuming messages and it has never failed like this. I think there is somthing
wrong with Stomp.
The stomp code is very basic and does not send anything odd. Only messages with message properties set. The stomp code closes the connection after every message sent.
I've looked at lsof and there is nothing out of order there.
netstat does however have alot of:
tcp6 0 0 127.0.0.1:61616 127.0.0.1:46280 CLOSE_WAIT
And the ActiveMQ Log shows alot of this
2011-04-28 12:43:09,819 | ERROR |
Could not accept connection :
java.net.SocketException: Too many
open files |
org.apache.activemq.broker.TransportConnector
| ActiveMQ Transport Server:
tcp://0.0.0.0:61616
I'm using:
ActiveMQ 5.4.2,
Tomcat 6.0.20,
Debian 5.0.3,
PHP 5.2.6,
Stomp revision 43
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看来您在 java 程序中打开了很多连接,然后您就达到了 ulimit -n。使用后关闭连接或使用连接池。
作为解决方法,您可以通过 sysctl 提高打开文件限制,请参阅此处的教程。
It seems that you are opening a lot connections in your java program, and then you are hitting your ulimit -n. Close Connections after usage or use a connection pool.
As a wourkaround you can raise your open file limit via sysctl, see a tutorial here.