Linux

[Server] Cannot allocate memory

youn12 2022. 10. 5. 15:42
✏️ Info.

-  AWS EC2 하나에 3개의 Java Application 이 가동 중
    - 인스턴스 유형 : t3.small (https://aws.amazon.com/ko/ec2/instance-types/t3/)
- 사용량이 많아지자 Application 이 계속 다운되는 현상 발생
- Swap 메모리 설정으로 해결
    - 부족한 Ram Memory 를 HDD로 대체

📋 List.

 1. JVM 모니터링
    - JPS 명령어로 확인
 2. swap 설정
     1. swap 생성
     2. swap 파일 생성
     3. swap 확인

✔️ Content.

 

1. JVM 모니터링

 

이슈 확인 중 jps(Java Virtural Machine Process Status Tool , JVM 프로세스 상태 확인 툴) 라는 명령어를 찾음

 

jps 명령어 입력 시 

 

 - 정상

26273 Jps
{a-pid} {a-application}.jar
{b-pid} {b-application}.jar
{c-pid} {c-application}.jar

 

 - 이상

OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f7b4b0b0000, 16056320, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 16056320 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /home/ec2-user/hs_err_pid24553.log

 

2. Swap 설정

 

 1. swap 파일 생성

 

 - fallocate : 파일 생성

 - chmod : 권한 설정

 

설치된 RAM 용량권장되는 스왑 용량최대절전을 허용할때 권장되는 스왑용량

2GB 이하 RAM 용량의 2배 RAM 용량의 3배
> 2GB - 8GB RAM 용량 RAM 용량의 2배
> 8GB - 64GB 적어도 4GB ~ RAM 용량의 1 / 2 배 RAM 용량의 1.5배
> 64GB 이상 적어도 4GB 최대절전이 권장되지 않음
$ sudo fallocate -l 2G /swapfile
$ sudo chmod 600 /swapfile

 

 2. swap 파일 설정

 

- mkswap : swap 파일으로 지정

- swapon : swap 파일 활성화

 

$ sudo mkswap /swapfile
$ sudo swapon /swapfile

 

 3. swap 확인

 

- swapon : swap 확인 명령어

sudo swapon -s

- free : 메모리 확인 명령어

$ sudo free -h
              total        used        free      shared  buff/cache   available
Mem:           1.9G        1.7G         85M        196K        118M         71M
Swap:          2.0G        142M        1.9G

 


❗️ Refer.

- Swap 설정
- Cannot allocate memory에러!! 메모리 부족 현상
- [AWS] JVM cannot allocate memory 에러
- 권장 Swap 공간