개발서버의 RAM 용량이 95 퍼센트 이상을 기록하면서, 모니터링 시스템에서 알람이 오는 현상이 발생했다.
개발 서버는 사실 서버의 스팩 자체도 조금 낮은 편이고, 성능 보다는 코드의 구동 여부를 위해 운용하는 서버라 구동되고 있는 DB 인스턴스를 다른 서버로 옮겨서 근본적인 문제를 해결하기 보다는, 어플리케이션이 조금 느려지더라도 큰 변경 사항이 없는 방법인 스왑 메모리를 사용하기로 하였다.
스왑 메모리(Swap Memory)는 시스템의 실제 물리적 메모리(RAM)가 부족할 때, 디스크의 일부 공간을 사용하여 임시로 메모리를 확장하는 방법입니다. 즉, 메모리가 부족할 때 활성화된 데이터를 스왑 공간으로 옮겨놓고 나중에 다시 필요할 때 그 데이터를 가져오는 방식으로 운영됩니다. 스왑 메모리는 디스크의 공간을 사용하기 때문에 RAM보다 속도가 느리지만, 시스템이 메모리 부족으로 인해 멈추지 않도록 방지하는 중요한 역할을 합니다.
스왑 메모리의 동작 원리
1. 활성 메모리: 자주 사용되는 데이터는 실제 RAM에 유지됩니다.
2. 비활성 메모리: 메모리가 부족해지면, 사용하지 않는 데이터는 스왑 공간으로 이동됩니다.
3. 필요시 복구: 다시 필요할 때 해당 데이터는 RAM으로 복구되며, 추가 메모리가 필요한 경우 다른 비활성 데이터는 다시 스왑 공간으로 이동됩니다.
리눅스 환경에서 스왑 공간을 설정하려면 스왑 파일을 생성하는 방법이 있습니다.
sudo fallocate -l 8G /swapfile
위 명령어는 8GB 크기의 스왑 파일을 생성합니다. 원하는 크기로 변경할 수 있습니다.
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon --show
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
• 데스크톱 사용: 물리적 메모리가 충분할 경우(예: 8GB 이상), 스왑 공간은 2~4GB 정도로 충분.
• 서버 환경: 서버의 메모리 용량과 운영 방식에 따라 스왑 공간을 설정하는 것이 좋습니다. 일반적으로 RAM의 1배~2배 크기를 설정하는 것이 권장되지만, 스왑이 자주 사용되지 않는 것이 이상적