Jenkins가 기동되지 않아 앞단 nginx가 502를 반환하고 서비스가 restart loop에 들어간 사례가 있었다. 같은 증상이라도 플러그인, 디스크, 권한과 JVM 메모리 등 원인은 다를 수 있다. 재시작 전에 확인할 항목과 원인별 조치 순서를 정리한다.
증상
- Jenkins 접속 불가
- nginx 502 Bad Gateway
- Jenkins agent 연결 끊김
systemctl status jenkins→activating상태 지속- Jenkins 프로세스 restart loop 발생
activating 상태에서 기동이 완료되지 않고 재시작이 반복되는 것이 핵심 증상이다. 이때 502는 nginx가 백엔드 Jenkins에 연결하지 못해 발생한 결과다.
상태 확인
먼저 프로세스와 I/O 상태를 본다.
# Jenkins 프로세스 확인
ps -ef | grep jenkins
# 디스크 I/O 병목 여부 확인
iostat -xm 1 5
iostat을 보는 이유는 Jenkins가 기동 중 멈추는 흔한 원인 하나가 디스크 I/O 포화이기 때문이다.
로그 확인과 원인별 조치
# 상태를 길게 확인
systemctl status jenkins -l
# 현재 부팅의 Jenkins 로그 확인
journalctl -u jenkins -b --no-pager -n 300
# 로그 실시간 추적
journalctl -u jenkins -f
로그에서 플러그인 로딩 실패, 디스크 부족, 파일 권한, JVM 메모리 또는 포트 충돌 여부를 확인한다. 원인이 특정된 뒤 해당 플러그인을 비활성화하거나 디스크·권한·JVM 설정을 조정하고 Jenkins만 재시작한다. 같은 호스트의 다른 컨테이너를 일괄 중지하면 장애 범위가 확대될 수 있으므로 대상 프로세스를 확인하지 않은 일괄 재기동은 하지 않는다.
메모
재시작을 반복하면 최초 오류가 로그에서 밀려나거나 주변 서비스에 영향을 줄 수 있다. activating 상태가 지속되면 먼저 현재 부팅의 Jenkins 로그와 시스템 자원을 확인하고, 원인을 특정한 뒤 영향 범위를 제한해 조치해야 한다.
참고