메모리는 얼마나 필요할까 (실제 사용량 재기)
플랜이나 단독서버를 고를 때 가장 헷갈리는 것이 메모리입니다. 이미 쓰고 있는 서버가 있다면 실제 사용량을 재서 정하는 것이 가장 정확합니다.
1. 서버 전체 사용량 보기
free -h
used보다 **available**을 보세요. 새 프로그램이 실제로 더 쓸 수 있는 양입니다. buff/cache는 리눅스가 잠시 빌려 쓰다가 필요하면 돌려주는 메모리라 걱정하지 않아도 됩니다. (항목별 뜻은 내 서버 사양 확인하기 참고)
Windows 서버는 작업 관리자(Ctrl + Shift + Esc) → 성능 → 메모리에서 사용 중인 양과 사용 가능한 양을 볼 수 있습니다.
2. 프로그램별 사용량 보기
ps -eo pid,rss,comm --sort=-rss | head -n 11
메모리를 많이 쓰는 순서로 10개를 보여줍니다. RSS가 프로그램이 실제로 차지한 메모리이고 단위는 KB입니다. (1,024가 1MB, 1,048,576이 1GB)
Windows 서버는 작업 관리자의 프로세스 탭에서 메모리 열 제목을 누르면 많이 쓰는 순서로 정렬됩니다.
3. 가장 많이 쓸 때를 기준으로 정하세요
메모리는 접속자가 가장 많을 때, 백업이나 업데이트가 돌 때 가장 많이 씁니다. 한 번 재고 끝내기보다 하루 동안 기록해두면 최대치를 알 수 있습니다.
while true; do echo "$(date '+%F %T') $(free -m | awk '/^Mem/ {print "used=" $3 "MB available=" $7 "MB"}')"; sleep 60; done >> ~/mem.log
1분마다 사용량을 ~/mem.log에 적습니다. Ctrl + C로 멈추고, 창을 닫아도 계속 기록하려면 screen·tmux 안에서 실행하세요. 다 모았다면 여유가 가장 적었던 순간을 찾아봅니다.
sort -t= -k3 -n ~/mem.log | head -n 3
이때의 available도 넉넉하게 남는 사양이 적당합니다. 정확한 기준을 모르겠다면 VPS 사양 고르는 법 (용도별 추천 사양)처럼 한 단계 여유 있게 고르는 것을 추천합니다.
4. 용도별로 함께 볼 것
- 마인크래프트 자바 서버 — 서버 메모리는 게임에 줄 메모리(
-Xmx)에 운영체제 몫을 더한 만큼 필요합니다. 운영체제 몫으로 Linux는 12GB, Windows는 23GB를 남기세요. 자바는-Xmx로 정한 것보다 조금 더 쓰기 때문에 서버 메모리에 딱 맞추면 안 됩니다. (마인크래프트 서버 만들기 (Java 에디션, Paper·바닐라)) - Windows 서버 — 운영체제가 쓰는 메모리가 Linux보다 많아서 같은 프로그램이라도 메모리가 더 넉넉해야 합니다. 작은 플랜은 Windows Server를 고를 수 없는 경우도 있습니다. (요금제에 "Windows Server 미지원"으로 표시)
- 디스코드 봇 — 대부분 적은 메모리로 충분해서 봇 하나라면 가장 작은 플랜부터 시작해도 됩니다. 음악 봇처럼 무거운 작업을 한다면 한 단계 높은 플랜을 고르세요.
- 데이터베이스 — 메모리가 넉넉할수록 자주 쓰는 데이터를 메모리에 올려두고 처리해서 빨라집니다.
- 여러 프로그램을 함께 — 프로그램마다 가장 많이 쓸 때의 사용량을 더해서 계산하세요.
5. 메모리가 모자라면 생기는 일
Linux는 메모리가 바닥나면 프로그램 하나를 강제로 종료합니다. 프로그램이 이유 없이 꺼졌다면 이것부터 확인하세요.
sudo dmesg -T | grep -i -E "out of memory|killed process"
결과가 나온다면 메모리 부족으로 꺼진 것입니다.