Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > java.net.SocketException: Too many open files


Автор: Barvetal 29.9.2007, 17:26
Всем здравствуйте!

Мы используем у себя технологию Apache jetspeed 2. Выкачали новую версию, поставили на новый сервер.

Когда запускаем его под рабочую нагрузку, через какое-то время он перестает отвечать, количество потоков на томкате начинают сильно возрастать, и сервер падает.

Смотрим логи - там очень много сообщений:
Цитата

27.09.2007 11:06:44 org.apache.tomcat.util.net.PoolTcpEndpoint acceptSocket
SEVERE: Endpoint ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=8080] ignored exception: java.net.SocketException: Too many open files
java.net.SocketException: Too many open files
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
    at java.net.ServerSocket.implAccept(ServerSocket.java:450)
    at java.net.ServerSocket.accept(ServerSocket.java:421)
    at org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultServerSocketFactory.java:60)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.acceptSocket(PoolTcpEndpoint.java:407)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:70)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)


Операционная система - SuSe 10.1.
Мне товарищ посоветовал посмотреть пару системных файлов. Вот результат:
Цитата

cat /proc/sys/fs/file-max
767711

Цитата

cat /etc/security/limits.conf
#<domain>      <type>  <item>         <value>
*         soft    nofile                     65535
*         hard    nofile                     65535

Судя по всему, количество файлов нормальное.

Еще один момент. У меня на сайте есть блоки, которые нужно включать в другие страницы сайта. Я эти блоки сделал сервлетом, и при конструировании страниц вызываю сервлет по http с того же сервера, и вставляю html-код, возвращаемый сервлетом, в конечную страницу. Получается ,пользователь с моего сервера дергает сервлет методом GET, а я внутри этого сервлета дергаю еще один сервлет с того же сервера. Может ли это спричинить мою проблему? HttpConnection и Stream результата я всегда закрываю в блоке finally.
Подробности этого момента здесь: http://forum.vingrad.ru/forum/topic-174556.html

Скажите, как можно побороть мою проблему?

Заранее огромное спасибо за помощь!

Автор: Vasay 30.9.2007, 00:08
Была у меня софтина, использующая HttpConnection, все работало ок. Перенес на другой сервер... стала сыпаться с "Too many open files" - 2 дня мучался...

Решение проблемы: на новом сервере оказался прописан неработающий днс, прописал работающий, все стало ок.

Проверь через шел - ping [ресурс, который идет в HttpConnection].

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)