👉 오류 내용
(JENKINS-48300: if on an extremely laggy filesystem, consider -Dorg.jenkinsci.plugins.durabletask.BourneShellScript.HEARTBEAT_CHECK_INTERVAL=86400)
- Jenkins 파이프라인으로 프로젝트 빌드 시, 계속 빌드 오류 발생
Resuming build at Fri Sep 01 02:34:58 KST 2023 after Jenkins restart
Ready to run at Fri Sep 01 02:34:58 KST 2023
- Log를 보면 Jenkins가 재시작되는 걸 확인할 수 있었음
- 해당 Jenkins 프로젝트 번호(#번호) → Console Output에서 보면 자세한 Log를 볼 수 있음
- 대시보드 메인에서 Log 보기로 들어가면 Jenkins 프로젝트 번호(#번호) → Shell Script → Console Output으로 들어가져서 간략한 Log만 보임
👉 서버의 상태 확인(CentOS)
- 📌 htop(CPU, RAM 사용량 확인), iotop(디스크 사용량 확인) 설치
- 명령어 :
yum install htop iotop
- 📌 htop 입력해서 실행한 화면
- 설명
- 1과 2는 CPU 코어의 스레드 상태
- Mem은 RAM 상태
- Swp는 가상 메모리 상태
- 현재는 0K로 사용하지 않는 상태
- 가상 메모리는 만약 RAM이 다 찼을 경우, 저장 장치를 이용해서 RAM에 저장해야 하는 것들을 저장 ⇒ 속도는 느리지만 프로그램이 임의로 꺼지는 걸 방지
- 나갈 때는
F10
이나 Quit 클릭
- 📌 iotop 입력해서 실행한 화면
- 맨 위의 두 줄에서 DISK READ와 WRITE 사용량을 확인할 수 있음
- 나갈 때는
q
- 📌 df -h 입력해서 디스크 공간 사용률 확인
- 7번째 줄인
/dev/xvda1 50G 18G 33G 36% /
부분을 통해 서버의 총 용량과 사용 중인 용량, 사용 가능한 용량 확인 가능
- Mounted on이 / 라 가장 상위 폴더이기 때문에 해당 부분을 확인하면 되는 것
👉 지속적으로 빌드하면서 CPU와 RAM의 상태 관찰
- 빌드 실행 시, RAM 사용량이 급격하게 올라감
- RAM 사용량이 일정 %가 되면 운영체제에서 실행 중인 프로세스들을 종료
- Jenkins가 종료되면 재시작되는데, 재시작 후에 gradlew clean build가 다시 시작되지 않음
- gradlew clean build가 완료되지 않으니 프로젝트가 실행되지 않음
- Jenkins 빌드 실패로 이어짐
👉 결론
- RAM이 더 큰 서버로 옮기거나 가동 중인 프로세스들을 여러 대의 서버로 분산 필요
- 느리더라도 돌아가는 게 목적이라면 Swap 파티션을 설정해보는 방법도 있음