-
Ubuntu 14.04 - Jenkins 연동 시 OOM 문제 해결IT, 프로그래밍/Jenkins 2018. 9. 28. 13:13
젠킨스를 사용 중에 시스템이 자꾸 다운되는 문제가 발생했다.
재부팅을 반복하던 중에, 톰캣과 같이 돌아가면서 생기는 문제로 확인했고
톰캣 서비스 종료 후에 돌리니 잘 돌아가는 것을 확인하였다.
하지만 젠킨스 배포시 톰캣 구동이 꼭 필요하므로 이 문제는 꼭 해결되어야 했다.
젠킨스와 톰캣이 동시에 돌아가면 급속도로 느려지고 입력이 아예 안되는 것을 보아, 어딘가 데드락에 걸렸거나 메모리 오버플로가 발생한 것으로 예상,
우선 젠킨스 로그 파일을 확인하였다.
1234# There is insufficient memory for the Java Runtime Environment to continue.# Native memory allocation (mmap) failed to map 38223872 bytes for committing reserved memory.# An error report file with more information is saved as:cs 재부팅 할때마다 이런 로그가 남아있다..
이제부터 해결 시작
1. 젠킨스의 Heap 메모리 영역을 늘려주기
/etc/default/jenkins 파일을 문서 편집기로 열어서 JAVA_ARGS 라는 부분을 찾아준다. 그럼 주석처리 된
1#JAVA_ARGS="-Xmx256m"cs 이 부분이 있을텐데 이 부분을 주석 해제 해주고 충분한 양을 할당해 준다.
-Xmx 이 옵션은 젠킨스에게 할당해 줄 최대 메모리 공간을 의미한다.
-XX:MaxPermSize=512m
여기보면 MaxPermSize를 설정해 줄 수 있는 옵션이 있는데 이것은 동적으로 할당되는 자바 객체의 메타정보를 저장하는 공간의 크기를 설정해 주는 것이라고 한다.
나의 경우는
12JAVA_ARGS="-Xmx1024m -XX:MaxPermSize=512m" Colored by Color Scriptercs 이렇게 설정해 주었다.
그리고 systemctl restart jenkins 명령을 통해 젠킨스 재시작.
젠킨스와 톰캣 동시에 돌려보니 잘 돌아간다.
그러나 젠킨스가 준비되는 과정에서 꺼져버리는 현상이 생김.
다시 로그 파일을 확인해 보니 여전히 메모리가 부족하다는 로그가 찍힌다.
구글링 해 보니, swap space 로 인한 문제인 것 같아, 답변에서 제시한 대로 명령을 수행한 후에 깔끔하게 해결하였다.
1234sudo fallocate -l 1G /swapfilesudo chmod 600 /swapfilesudo mkswap /swapfilesudo swapon /swapfilecs https://stackoverflow.com/questions/31041512/jenkins-build-throwing-an-out-of-memory-error
'IT, 프로그래밍 > Jenkins' 카테고리의 다른 글
젠킨스 - Git 스프링 프로젝트 배포시 별도 설정파일로 키값 숨기기 (0) 2018.10.05 Jenkins 외부 jar 추가하기 (0) 2018.10.01 젠킨스 연동 삽질기 (0) 2018.09.30 Jenkins로 배포시 git ignore 설정 파일 문제 (1) 2018.09.30