Вопрос

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

У меня есть приложение PHP, использующее топп для отправки сообщений в ActiveMQ и 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, Tomcat 6.0.20, Debian 5.0.3, Php 5.2.6, STOMP Revision 43

Это было полезно?

Решение

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

В качестве wourkaround вы можете поднять предел открытого файла через SYSCTL, см. Учебник здесь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top