Jenkins 파이프라인의 빌드 오류 : 서버 리소스 문제

LeeYulhee·2023년 8월 31일
0

👉 오류 내용


(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 파티션을 설정해보는 방법도 있음
profile
공부 중인 신입 백엔드 개발자입니다

0개의 댓글