스프링부트를 이용해서 어플리케이션을 개발하는 중...
잘만되던 build가 되지 않고
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f3a357c0000, 65536, 1) failed; error='메모리를 할당할 수 없습니다' (errno=12)
이렇게 갑자기 jvm쪽에서 oom이 발생한 듯한 에러가 나왔다.
리눅스... 한줄 치면 한줄 에러나오는 수준
시스템의 메모리 로드 줄이기.
물리적 메모리 또는 스왑 공간 늘리기.
스왑 백킹 저장소가 가득 차 있는지 확인.
64 비트 OS에서 64 비트 Java 사용.
Java 힙 크기 줄이기 (-Xmx / -Xms).
Java 스레드 수 줄이기
Java 스레드 스택 크기 줄이기 (-Xss)
-XX:ReservedCodeCacheSize= 를 사용하여 더 큰 코드 캐시 설정
별도로 스왑 공간을 생성하지 않았기 때문에 swap 공간을 만들어보도록 하겠다.
스왑 공간을 확인하기 위해서
free -h
검색해보면 스왑 공간이 0B인것을 확인할 수 있었다.
대부분의 리눅스 배포판은 스왑(SWAP) 파티션 설정을 권장한다고 한다. 파티션 하나에 전체 운영 체제를 두고 사용해온 윈도우 사용자에게는 낯설수도 있다.
$ touch /var/spool/swap/swapfile
$ dd if=/dev/zero of=/var/spool/swap/swapfile count=2048000 bs=1024
swap 파일을 만들어주고 2G의 메모리를 할당해주었다.
chmod 600 /var/spool/swap/swapfile
그 다음 권한을 설정해준다.
$ mkswap /var/spool/swap/swapfile
$ swapon /var/spool/swap/swapfile
파일 포맷을 SWAP으로 변환하고 SWAP file로 등록해준다.
$ vim /etc/fstab
주석 아래와 같이 작성해주고 저장해준다.
free -h
다시 확인해보면 swap영역이 생긴 것을 알 수 있다!
다시 build를 해보니 이번엔 아까와 같은 에러 없이 잘 돌아갔다.
리눅스를 제대로 공부하지 않고 그때그때 필요한 명령들이나 에러에 대해서 공부하다 보니 항상 어려운 것 같다.ㅜㅜ
참고
https://bhsbhs235.github.io/jenkins/2019/12/29/jenkinserror.html
너무 많은 도움이 됐습니다.