Ошибка "java.net.SocketException: слишком много открытых файлов" на этапе развертывания в jboss-portal-2.7.2

При запуске jboss-portal-2.7.2 в какой-то момент в сообщении журнала:

2013-01-30 20:32:02,541 ERROR [org.apache.tomcat.util.net.JIoEndpoint] Socket accept failed
java.net.SocketException: Too many open files
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:408)
        at java.net.ServerSocket.implAccept(ServerSocket.java:462)
        at java.net.ServerSocket.accept(ServerSocket.java:430)
        at org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultServerSocketFactory.java:61)
        at org.apache.tomcat.util.net.JIoEndpoint$Acceptor.run(JIoEndpoint.java:309)
        at java.lang.Thread.run(Thread.java:662)

В папке deploy всего 20 военных модулей. Какие-либо решения?

2 ответа

Увеличьте ulimit на вашем сервере для пользователя, запускающего tomcat.

Чтобы проверить ulimit:

ulimit -n

Чтобы увеличить текущую сессию:

ulimit -n 102400

Вы можете вносить постоянные изменения, редактируя /etc/security/limits.conf,

Это сообщение в основном означает, что вы достигли предела максимального количества файлов, которое вы можете открыть, как установлено вашей ОС.

Правильный способ решить эту проблему - диагностировать выход lsof -p <jboss_java_pid> и выяснить, что способствует открытию этих многих файлов. Затем действуйте соответственно для решения.

Быстрое решение проблемы может заключаться в том, чтобы увеличить глобальный максимальный лимит файлов в вашей ОС или увеличить лимит файлов для пользователя или для обоих. Например, в Fedora это можно установить в /proc/sys/file-max файл для глобального максимума файла и /etc/security/limits.conf для пользовательского лимита.

Другие вопросы по тегам