✏️ 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 공간