본문 바로가기
CI CD Automation

Jenkins Build Farm 장애 디버깅

by chung_yu 2026. 1. 27.

1. Build Farm 계층 구조 이해 (Infrastructure Hierarchy)

빌드가 안 될 때는 내가 보고 있는 문제가 '서버' 문제인지 '컨테이너' 문제인지 구분하는 것이 첫걸음입니다.

  • Build Farm (빌드 팜): 빌드 전용 시스템 전체를 부르는 별명
  • Kubernetes Cluster: 노드(서버)들을 하나로 묶어 관리하는 오케스트레이션 단위입니다.
  • Node (노드): 클러스터에 소속된 개별 **물리 서버 또는 가상 머신(VM)**입니다. (예: 10.123.456.xxx)
  • Pod (포드): 노드 위에서 실행되는 가장 작은 배포 단위입니다. *Jenkins에서는 빌드 시점에 생성되는 휘발성 슬레이브 역할
    • 핵심: 노드 하나에는 여러 포드가 살 수 있으며, 각 포드는 고유한 가상 IP를 가집니다.

2. Node(서버) 상태 파악 및 트러블슈팅

빌드 실패 시 서버 수준에서 확인해야 할 핵심 지표들입니다.

① 연결 확인: SSH & Ping

가장 먼저 서버가 "살아있는지" 확인합니다.

  • ping [IP]: 네트워크 레이어에서의 도달 가능성 확인.
  • ssh [ID]@[IP]: 서버 원격 접속 가능 여부 확인 (접속이 안 되면 서버 다운 혹은 보안 그룹/방화벽 문제).

② 시스템 부하 확인: top & htop

서버에 접속했다면 CPU와 메모리가 "숨 가쁜 상태"인지 확인해야 합니다.

  • Load Average (부하 평균):
    • 보는 법: top 상단의 1분, 5분, 15분 수치 확인.
    • 기준: CPU 코어 개수와 비교하세요. (nproc 명령어로 확인 | 인덱스가 0부터 시작해서 CPU 갯수 +1)
    • 판단: Load Average > 코어 수 라면 프로세스들이 줄을 서서 기다리는 중입니다. 코어 수의 2배를 넘어가면 심각한 지연이 발생합니다.
  • CPU %wa (I/O Wait): (★매우 중요)
    • 의미: CPU가 연산을 하고 싶은데, **디스크 읽기/쓰기(I/O)**가 너무 느려서 멍하니 기다리는 시간입니다.
    • 빌드 팜 특이사항: 빌드 시 소스 코드를 읽고 쓰는 양이 많기 때문에, 디스크 성능(IOPS)이 부족하면 이 수치가 치솟으며 빌드가 멈춘 것처럼 보입니다.
    • ex) %Cpu(s): 10.5 us, 5.0 sy, 0.0 ni, 40.0 id, 44.5 wa
      • => 여기서 wa 44.5라면, CPU 시간의 44% 이상을 디스크 작업 기다리는 데 쓰고 있다는 뜻
  • 상태 값(S)의 의미:
    • D (Uninterruptible Sleep): 보통 디스크 I/O를 기다리는 상태입니다. D 상태인 프로세스가 많으면 시스템이 매우 느려집니다.

③ 로그 확인: syslog

명령어로 보이지 않는 하드웨어 에러나 커널 에러를 찾습니다.

  • sudo tail -f /var/log/syslog: 실시간 시스템 로그 모니터링.
  • grep -i "error" /var/log/syslog (error나 critical) : 특정 단어로 검색

3. 디버깅 도구 한눈에 보기

도구 용도 핵심 확인 지표
top 실시간 프로세스 모니터링 Load Average, CPU 사용률(%cpu), 메모리 점유율
htop 인터랙티브 프로세스 뷰어 코어별 CPU 부하 시각화, 메모리/스왑 직관적 확인
df -h 디스크 여유 공간 확인 파티션별 사용량(Used%), 마운트 경로