Как решить проблему "Слишком много открытых файлов" в Hudson?

Мы используем 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 изменениями), поэтому мы всегда считали ее запуском двух заданий сборки, которые выполняются одновременно, и при этом слишком много файлов было открыто во время процесса.

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


person Randyaa    schedule 22.09.2008    source источник


Ответы (5)


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

person Michael Donohue    schedule 16.07.2009

См. https://wiki.jenkins-ci.org/display/JENKINS/I%27m+getting+too+many+open+files+error за то, что нам нужно от вас, чтобы решить эту проблему.

person Kohsuke Kawaguchi    schedule 22.01.2010
comment
У нас давно не было этой проблемы. Если он появится снова, я обязательно пришлю запрошенную информацию. - person Randyaa; 08.02.2010
comment
Kohsuke - возможно, улучшение Jenkins могло бы заключаться в том, чтобы следить за ограничениями файловых дескрипторов и самовосстановлением, запустив GC тогда? Мы работаем на ящиках с большими размерами памяти (скоро они будут в диапазоне 96 ГБ), поэтому он может работать в течение некоторого времени, прежде чем пытаться выполнить сборку мусора. - person Danny Staple; 21.02.2011
comment
Звучит как отличный хакер! Где находится RFE в issues.jenkins-ci.org? :-) - person Kohsuke Kawaguchi; 02.03.2011

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

person tzot    schedule 22.09.2008

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

person Christofer Lundstedt    schedule 16.07.2009

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

person Szymon P    schedule 13.08.2014