ActiveMQ SocketException

Каждые два месяца я сталкиваюсь с проблемой. Мой сервер activemq умирает, а журнал полон SocketExceptions.

У меня есть приложение PHP, использующее топтание для отправки сообщений в ActiveMQ и приложение Java для использования сообщений.

У меня есть activemq на другом сервере, где при отправке / потреблении сообщений используются только java-приложения, и он никогда не терпел неудач. Я думаю, что со Стомпом что-то не так.

Код педали очень простой и не посылает ничего лишнего. Только сообщения с установленными свойствами сообщения. Стоп-код закрывает соединение после каждого отправленного сообщения.

Посмотрел 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


person heldt    schedule 28.04.2011    source источник


Ответы (1)


Кажется, что вы открываете много соединений в своей java-программе, а затем нажимаете свой ulimit -n. Закройте соединения после использования или используйте пул соединений.

В качестве обходного пути вы можете увеличить лимит открытых файлов с помощью sysctl, см. руководство здесь .

person moritz    schedule 28.04.2011
comment
Приложение java скоро будет заменено, поэтому я пока воспользуюсь вашим решением ulimit. - person heldt; 28.04.2011
comment
на какой язык программирования вы заменили java? это из-за очереди, что в конце концов вы хотите заменить java? - person Nicolas; 15.07.2013