[AWS] EC2 프리티어에서 발생하는 메모리 문제 해결방법
들어가기 전
EC2 프리티어에서는 메모리를 1GB만 지원을 해주고 있습니다. 필자 또한 프리티어를 사용해서 메모리 문제를 직면하여 EC2에 띄워놓았던 젠킨스의 실행 속도가 너무 느리거나 멈추는 현상을 겪었습니다. 해당 포스팅에서는 이 문제에 대해 해결하는 방법에 대해 설명하겠습니다.
문제를 해결하는 방법에 대해 알기 전에 스왑 메모리(Swap Memory)에 대해 먼저 알아보겠습니다.
스왑 메모리
스왑 메모리란 실제 메모리가 가득 찼지만 더 많은 메모리를 사용해야 될 때 디스크 공간을 빌려와 메모리를 사용할 수 있는 가상 메모리를 의미합니다.
리눅스 커널은 실제 메모리에 올라와 있는 메모리 블록들 중 당장 쓰이지 않는 것을 디스크에 저장함으로써 자동으로 사용 가능한 메모리 영역을 늘립니다.
하지만 스왑 메모리의 경우 그 크기를 리눅스 커널처럼 자동으로 조절할 수 없기 때문에 하드 디스크의 공간을 항상 차지를 하여 하드 디스크까지의 접근 시간이 추가되기 때문에 실제 메모리(RAM)에 비해 속도의 성능이 떨어질 수 있습니다.
Swap in, Swap Out
Swap in은 실제 메모리(RAM)가 가득 차서 더 이상 프로그램과 데이터를 수용할 수 없을 때, 하드 디스크의 스왑 영역에 있는 데이터를 메모리로 가져오는 과정을 말합니다.
Swap out은 메모리 내의 데이터 중 일부를 하드 디스크의 스왑 영역으로 이동시키는 것을 의미합니다. 이것은 메모리가 부족할 때 운영 체제가 비활성화된 프로세스의 데이터를 스왑 영역으로 옮겨서 더 많은 공간을 확보하는 데 사용됩니다.
이 둘을 묶어 스와핑이라고 합니다.
이제 스왑 메모리를 이용하여 EC2 프리티어에서 발생하는 메모리 문제를 해결하는 방법에 대해 알아보겠습니다.
1. Swap 파일 생성 및 가상 메모리 크기 설정
sudo dd if=/dev/zero of=/swapfile bs=128M count=16
- dd : 블록 단위로 파일을 복사하거나 파일 변환
- if : 지정한 파일을 입력대상으로 설정
- of : 지정한 파일을 출력대상으로 설정
- bs : 한 번에 읽고 쓸 최대 바이트 크기 지정
- count : 지정한 블록 수만큼 복사
스왑 파일의 크기는 bs(128) x count(16)가 됩니다. 필자는 2.1GB 스왑 파일을 생성하였습니다.
2. 스왑 파일 권한 변경
sudo chmod 600 /swapfile
3. 앞에서 만든 파일을 스왑 파일로 설정 및 활성화
만약 swap 메모리를 비활성화하고 싶다면 아래 명령어를 사용하면 됩니다.
sudo swapoff {스왑파일경로}
sudo swapon -s //활성화 여부 확인
4. EC2 인스턴스가 재부팅이 될 때 스왑 파일을 사용할 수 있도록 설정
sudo vi /etc/fstab
/swapfile swap swap defaults 0 0 // <- 입력
메모리 사용량 확인하는 방법
Swap 메모리를 사용 안 했을 때
free -h
htop
Swap 메모리를 사용했을때
free -h
htop
free -h
'DevOps > AWS' 카테고리의 다른 글
[AWS] RDS(MySQL)와 EC2(Spring Boot) 연동하는 방법 (0) | 2023.10.17 |
---|---|
[AWS] RDS 데이터베이스 생성 및 MySQL Workbench 연동 (2) | 2023.10.17 |
[AWS] EC2 Ubuntu환경에서 Spring Boot 배포 (0) | 2022.07.16 |
[AWS] AWS EC2 인스턴스 생성 (0) | 2022.07.16 |
댓글
이 글 공유하기
다른 글
-
[AWS] RDS(MySQL)와 EC2(Spring Boot) 연동하는 방법
[AWS] RDS(MySQL)와 EC2(Spring Boot) 연동하는 방법
2023.10.17 -
[AWS] RDS 데이터베이스 생성 및 MySQL Workbench 연동
[AWS] RDS 데이터베이스 생성 및 MySQL Workbench 연동
2023.10.17 -
[AWS] EC2 Ubuntu환경에서 Spring Boot 배포
[AWS] EC2 Ubuntu환경에서 Spring Boot 배포
2022.07.16 -
[AWS] AWS EC2 인스턴스 생성
[AWS] AWS EC2 인스턴스 생성
2022.07.16