Jenkins가 기동되지 않아 앞단 nginx가 502를 반환하고 서비스가 restart loop에 들어간 사례가 있었다. 같은 증상이라도 플러그인, 디스크, 권한과 JVM 메모리 등 원인은 다를 수 있다. 재시작 전에 확인할 항목과 원인별 조치 순서를 정리한다.

증상

  • Jenkins 접속 불가
  • nginx 502 Bad Gateway
  • Jenkins agent 연결 끊김
  • systemctl status jenkinsactivating 상태 지속
  • 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 로그와 시스템 자원을 확인하고, 원인을 특정한 뒤 영향 범위를 제한해 조치해야 한다.


참고