How to append additional memory to AWS Freetier EC2?
AWS EC2 프리티어 서버가 계속해서 터진다면
99%는 메모리 부족문제라고 볼 수 있다. 프리티어로
제공되는 서버 컴퓨터의 스펙이 너무 낮기 때문에
서버에 최적화된 프로그래밍을 배울 수 있다. ㅋㅋ
AWS EC2 프리티어 메모리 부족문제
AWS 서버는 프리티어로 사용가능하지만, 부족한
스펙으로 일반적인 프로그램을 돌리기에는 힘든경우가
많다. 메모리가 부족하거나, 용량이 부족하하거나,
부족한게 투성이다.
그럼에도 불구하고 초기 서비스를 운영하고 테스트
해보기에는 안성맞춤이기에, 프리티어를 어떻게든
최적화해서 사용해야 한다.
AWS 프리티어에서 가장 큰 문제점은 메모리 부족현상이다.
기본적으로 프리티어에서 제공하는 AWS EC2 스펙은
30GB SSD와 1GB 메모리를 가지고 있다. SSD는 그럭적럭
사용할만한데 문제는 메모리다. 기본 서버 OS가 돌아가기 위해
필요한 메모리가 500MB가까이 되기 때문에 작은 프로그램
하나만 돌리더라도 서버가 뻗어버리는 현상이 나온다.
물론 추가금액을 지불하고 auto-scale을 사용할 수도 있겠지만,
이건 금액이 추가되니 차선이다. 최선책은 추가로 사용할 수 있는
메모리를 구하는 것이다. 그래서 나온 개념이 SWAP 메모리다.
SWAP 메모리
swap 메모리는 리눅스에서 swap 공간을 사용하는 메모리를 의미한다.
만약 OS에서 메모리를 full로 사용하고 있다면, 사용하지 않는 메모리 안의
페이지를 하드드라이브에 저장하게 되는데, 이게 SWAP 메모리의 기본
개념이다.
메모리의 대체개념으로 사용가능하지만, 메모리를 100% 대체할 수는 없다.
사용하지 않는 메모리 내의 페이지만 보관하는 용도로 사용해야 한다.
그 이유는 속도 때문이다. CPU에서 I/O 작업을 할 때 메모리와 일반 하드드라이브의
I/O 속도 개념이 다르기 때문이다.
일반적인 SSD(Solid State Drive)의 속도는 450MB/s를 내지만, CPU와
직접 paging 작업을 하는 RAM 메모리의 속도는 12,800MB/s의 속도를
낸다. 무려 30배 이상의 차이가 나는 것이다. 항상 대체제의 개념으로
SWAP을 사용해야 한다.
SWAP 메모리 용량 설정
재미있는게, AWS에서도 EC2 프리티어에서 프로그램을 돌리기에 메모리가
부족하다는 걸 알고 있다는 것이다. AWS에서도 SWAP 공간을 사용해서 메모리를
추가로 확보하는 방법을 안내하고 있다.
https://aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-memory-swap-file/
SWAP Memory 할당용량과 할당방법
SWAP Memory를 사용할 때 기억해야 할 것은 용량과 방법이다.
SWAP Memory를 사용하기 위해서는 SWAP Space를 마련해야 한다.
SWAP Space을 마련하는 방법은 SWAP partitions을 사용하는 방법과
SWAP File을 사용하는 방법이 있다.
또한 SWAP Space를 설정해줘야 하는데, 물리적인 RAM의 용량에 비례
해서 SWAP Space를 마련해야 한다. 제약사항으로는 최소 32MB이상은
마련되야 한다는 것이다.
RAM | SWAP Space |
RAM <= 2GB | RAM 용량의 2배(최소 32MB) |
2GB < RAM < 32GB | 4GB+(RAM-2GB) |
RAM >= 32GB | RAM 용량의 1배 |
AWS EC2 우분투 리눅스 SWAP Space 설정
dd 명령어로 SWAP 메모리를 할당한다.
SWAP Space의 기본 용량단위는 128M다.
AWS 프리티어의 경우 RAM이 1GB기 때문에 2GB의
SWAP Space를 할당하기 위해서는 count=16으로 설정해준다.
1
|
sudo dd if=/dev/zero of=/swapfile bs=128M count=16
|
cs |
스왑 파일 Read / Write 권한을 변경한다.
1
|
$ sudo chmod 600 /swapfile
|
cs |
Linux SWAP File을 사용해서 영역을 설정한다.
1
|
$ sudo mkswap /swapfile
|
cs |
SWAP Space에 SWAP File을 추가해준다.
1
|
$ sudo swapon /swapfile
|
cs |
추가된 SWAP 영역을 확인한다
1
|
$ sudo swapon -s
|
cs |
서버를 Reboot 할 경우 SWAP을 자동으로 활성화 하기 위해
/etc/fstab 파일을 열어서 해당 내용을 추가해준다.
이제 SWAP Space 설정이 완료되었다.
free -h 명령어로 현재 메모리를 확인하면 정상적으로 2GB의
SWAP 메모리 영역이 생성되었고, 실제로 사용되지 않는
RAM의 page들이 저장되고 있는 것을 확인할 수 있다.
최소한 서버가 뻗어서 인스턴스 재시작을 해주지 않기
위해서 AWS EC2 프리티어에서 SWAP Memory 사용은
선택이 아닌 필수다.
'Programming' 카테고리의 다른 글
Django Web Application robots.tst 생성&적용 방법 (0) | 2022.01.27 |
---|---|
Django web application sitemap 생성 & 적용 방법 (0) | 2022.01.27 |
Django Web application Timezone setting (0) | 2022.01.25 |
AWS server CRONTAB cache 삭제 / ubuntu linux root 계정 권한 얻는 방법 (0) | 2022.01.24 |
ubuntu linux 메모리 확인방법 (0) | 2022.01.24 |
konlpy 모듈 실행시 JVM Error 해결방법 jpype._jvmfinder.JVMNotFoundException: No JVM shared library file (libjvm.so) found. Try setting up the JAVA_HOME environment variable properly (0) | 2022.01.24 |
댓글