정보
[AWS] EC2 인스턴스 메모리 초과 문제
Gyoogle
2021. 9. 17. 16:12
728x90
반응형
Error명 : OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000eaaa0000, 178978816, 0) failed; error='Not enough space' (errno=12)
EC2 인스턴스에서 스프링 부트 gradle 프로젝트를 clone
후, /gradlew test
를 진행했을 때 에러가 발생할 수 있다.
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f4eb92b0000, 262144, 0) failed; error='Not enough space' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 262144 bytes for committing reserved memory.
해당 에러는 테스트 과정에서 EC2 인스턴스의 메모리를 초과하기 때문에 발생한 것이다.
이는 아마존 EC2 인스턴스의 SWAP 공간을 활용하여 해결할 수 있다.
free -h
를 통해 Mem과 Swap의 현재 저장 공간을 확인할 수 있다.
total used free shared buff/cache available
Mem: 983M 348M 368M 400K 266M 499M
Swap: 0B 0B 0B
Swap에서 RAM 1기가를 사용할 수 있도록 설정한다.
64MB * 16 = 1GB
bash에서 아래 명령어를 순서대로 실행시킨다.
Swap 메모리 할당
$ sudo dd if=/dev/zero of=/swapfile bs=64M count=16
Swap 파일 권한 설정 (읽기, 쓰기)
$ sudo chmod 600 /swapfile
Linux Swap 영역 설정
$ sudo mkswap /swapfile
Swap 영역에서 swapfile 사용 설정
$ sudo swapon /swapfile
부팅 시 swapfile 활성화
$ sudo vi /etc/fstab
vi 창이 열리면, insert모드를 통해 아래 다음과 같이 추가시킨 후 :wq
로 저장 후 나온다.
/swapfile swap swap defaults 0 0
다시 free -h
를 해보자
total used free shared buff/cache available
Mem: 983M 348M 368M 400K 266M 499M
Swap: 1.0G 0B 1.0G
Swap에 메모리 공간이 할당되었다.
이제 다시 프로젝트 경로로 돌아가 /gradlew test
를 진행하면 메모리 초과 문제가 해결된 것을 확인할 수 있다.
만약, gradlew 실행 권한이 없는 Permission denied가 나온다면?
$ chmod +x ./gradlew
실행 권한을 추가한 뒤 진행하면 된다.
[참고 자료]
728x90
반응형