ActiveMQ SocketException - PullRequest
       14

ActiveMQ SocketException

2 голосов
/ 28 апреля 2011

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

У меня есть приложение 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: ТСР: //0.0.0.0: 61616

Я использую:

ActiveMQ 5.4.2, Tomcat 6.0.20, Debian 5.0.3, PHP 5.2.6, Stomp ревизия 43

1 Ответ

2 голосов
/ 28 апреля 2011

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

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

...