2011-04-28 74 views
2

我每兩個月左右就遇到一個問題。我的activemq服務器死亡,並且日誌充滿了SocketExceptions。ActiveMQ SocketException

我有一個PHP應用程序使用stomp向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日誌顯示了很多的這種

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

回答

2

看來你在你的java程序中打開了很多連接,然後你打到了你的ulimit -n。在使用後關閉連接或使用連接池。

作爲一個新手,你可以通過sysctl提高打開的文件限制,參見tutorial here

+0

Java應用程序即將被替換,因此我現在將使用ulimit解決方案。 – heldt 2011-04-28 12:47:31

+0

你用什麼編程語言取代java? 是否因爲排隊而最終想要替換java? – Nicolas 2013-07-15 09:15:06