Как вы решаете проблему «Слишком много открытых файлов» в Гудзоне? - PullRequest
6 голосов
/ 22 сентября 2008

Мы используем Hudson как систему непрерывной интеграции для выполнения автоматических сборок (ночных и основанных на опросе CVS) многих наших проектов.

Некоторые проекты опрашивают CVS каждые 15 минут, другие - каждые 5 минут, а некоторые - каждый час.

Каждые несколько недель мы получаем сборку, которая завершается с ошибкой со следующим выводом:

FATAL: java.io.IOException: Too many open files
java.io.IOException: java.io.IOException: Too many open files
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:148)

Следующая сборка всегда работала (с 0 изменениями), поэтому мы всегда записывали в нее до 2 сборочных заданий, которые выполняются одновременно и в ходе процесса открываются слишком много файлов.

В эти выходные у нас был сбой сборки в пятницу вечером (автоматическая ночная сборка) с сообщением, и каждая другая ночная сборка также не удалась. Каким-то образом это заставило Хадсона постоянно строить каждый проект, который не удался, пока проблема не была решена. Это приводило к сборке каждые 30 минут каждого проекта до субботнего вечера, когда проблема волшебным образом исчезла.

Ответы [ 5 ]

4 голосов
/ 16 июля 2009

Это выпуск Hudson 715 (http://issues.hudson -ci.org / browse / HUDSON-715 ). Текущая рекомендация - установить «максимальное количество потоков одновременного опроса», чтобы снизить активность опроса.

3 голосов
/ 22 января 2010
0 голосов
/ 13 августа 2014

Одной из наиболее распространенных проблем, вызывающих «слишком много открытых файлов», является включение и настройка подключаемого модуля Active Directory в Jenkins. Существуют известные проблемы с этим плагином, которые приводят к появлению огромного количества потоков, а также к ошибке «Too many open files» в журналах. После его отключения и переключения на аутентификацию LDAP у меня больше не возникало зависания Дженкинса.

0 голосов
/ 16 июля 2009

У меня возникла эта проблема с другим Java-приложением, работающим на Debian, оно исчезло, когда мы перешли на версию Java 1.6.0.0. Java никогда не закрывала неиспользуемые соединения, вызывая исключение.

0 голосов
/ 22 сентября 2008

Изменить системные лимиты для каждого дескриптора максимально открытого файла? Как в ulimit -n для процесса Java?

...