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%), 마운트 경로 |