6

우리는 많은 프로젝트의 자동화 된 빌드 (야간 및 CVS 폴링 기반)를 실행하기 위해 연속 통합 시스템으로 Hudson을 사용합니다.허드슨에서 "너무 많은 파일 열기"문제를 어떻게 해결합니까?

일부 프로젝트는 15 분마다 CVS를 폴링하고, 다른 프로젝트는 매 5 분마다 폴링하고 매시간 폴링합니다.

마다 몇 주 동안 우리는 다음과 같은 출력 실패 빌드를 얻을 것이다 : 다음 빌드는 항상 (0 변경) 일을 우리가 항상 실행되고 2 개 빌드 작업에 돌리고

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) 

같은 시간에 프로세스 중에 너무 많은 파일이 열리게됩니다.

이번 주말에 우리는 금요일 밤 (자동 야간 빌드)에 실패했고 그 외 다른 야간 빌드도 실패했습니다. 어떻게 든이 문제는 문제가 해결 될 때까지 실패한 모든 프로젝트를 지속적으로 구축하도록 허드슨을 촉발 시켰습니다. 이로 인해 매주 토요일 밤까지 문제가 마술처럼 사라질 때까지 매 30 분마다 모든 프로젝트가 완료되었습니다.

답변

4

허드슨 문제 715 (http://issues.hudson-ci.org/browse/HUDSON-715)입니다. 현재 권장 사항은 '동시 폴링 스레드의 최대 수'를 설정하여 폴링 활동을 중단 상태로 유지하는 것입니다.

+0

문제 715에 대한 링크가 깨졌습니다. 업데이트 할 수 있습니까? –

0

프로세스 별 최대 열린 파일 디스크립터에 대한 시스템 제한을 변경 하시겠습니까? Java 프로세스의 경우 ulimit -n 에서처럼?

0

데비안에서 실행되는 다른 Java 응용 프로그램에서이 문제가 발생했습니다. Java 버전 1.6.0.0으로 다운 그레이드 할 때 사라졌습니다. Java는 사용되지 않는 연결을 절대로 닫지 않아 예외를 throw합니다.

3

이런 종류의 문제를 해결하기 위해 우리가 필요로하는 것에 대해서는 https://wiki.jenkins-ci.org/display/JENKINS/I%27m+getting+too+many+open+files+error을 참조하십시오.

+0

우리는 오랫동안 문제가 없었습니다. 그것이 다시 자라면 요청 된 정보를 함께 보내야합니다. – Randyaa

+0

Kohsuke - 젠킨스의 기능 향상은 GC를 실행하여 파일 설명자 제한 및 자체 복구를 감시하는 것일 수 있습니다. 우리는 대용량 메모리가있는 상자 (곧 96G 범위에 있음)에서 실행 중이므로 GC를 시도하기 전에 얼마 동안 실행할 수 있습니다. –

+0

그건 큰 해킹처럼 들리네! http://issues.jenkins-ci.org/의 RFE는 어디에 있습니까? :-) –

0

"너무 많은 파일 열기"가 발생하는 가장 일반적인 문제 중 하나는 Jenkins에서 Active Directory 플러그인을 사용하도록 설정하고 구성하는 것입니다. 이 플러그인에는 많은 수의 스레드가 나타나고 로그에 "너무 많은 파일 열기"오류가 발생하는 것으로 알려진 문제점이 있습니다. 그것을 비활성화하고 LDAP 인증으로 전환 한 후 Jenkins가 더 이상 응답하지 않게되었습니다.