AWS 와 GCP 를 둘 다 사용해본 결과, 자료도 많고 돈도 미묘하게(..) 덜 나가는 AWS 를 사용하고 있다. GCP 는 미리 요금을 주고 거기에서 사용자가 계산하여 필요한 만큼 사용하는 방식이며, AWS 는 프리티어라는 기간 내에서 사용할 수 있는 사양들이 미리 정해져 있다.
개발한 프로젝트를 배포하려고 AWS 의 EC2 프리티어에서 제공하는 기본 사양으로 구축해두었다. 하지만 매번 배포 시마다 랜덤으로(….) 배포 속도가 매우 늦어져 인스턴스 재부팅이 일상화되었다. 프리티어에서 제공하는 사양만으로 잘 사용하고 있다는 사례를 듣고 현재 사양에서 최대한의 성능을 낼 수 있는 방법을 찾아보았다.
AWS EC2 에서 제공하는 서버의 사양은 다음과 같다.
다행히도 스토리지는 나름 넉넉한 편이었다. 배포 시 서버가 느려지는 현상은 RAM 의 크기가 작아서라고 판단하여 가상메모리를 설정해보았다.
free
명령어로 현재 할당되어 있는 메모리 상태와 df
로 디스크 사용량을 확인해보았다. 서버를 구축한 이후 초기 상태이므로 swap 메모리는 0 이고, 디스크 사용량도 6% 로 넉넉하게 남아있다.
서버의 기본 메모리가 1기가이므로 추가로 2기가 swap 메모리를 설정하였다.
# 메모리 설정 - 64 MB 를 32 개 할당
$ sudo dd if=/dev/zero of=/swapfile bs=64M count=32
32+0 records in
32+0 records out
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 30.1138 s, 71.3 MB/s
# swap 파일 권한 설정
$ sudo chmod 600 /swapfile
# swap 영역 설정
$ sudo mkswap /swapfile
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=9d18bf7b-1db9-42d5-aee2-be3d77b0b1da
# swap 공간에 swap 파일을 추가
$ sudo swapon /swapfile
$ sudo swapon -s
Filename Type Size Used Priority
/swapfile file 2097148 0 -2
인스턴스를 재부팅하더라도 swap 메모리를 활성화하도록 설정한다.
$ sudo vi /etc/fstab
#마지막 라인에 추가
/swapfile swap swap defaults 0 0
재부팅 후 다시 메모리와 디스크 사용량을 확인해보면 제대로 설정된 것을 알 수 있다.