OneWebDesk

서버 RAM 용량 추정기

동시 접속·워커 수·프로세스당 메모리로 웹 서버에 필요한 RAM 용량을 추정합니다.

웹·API 서버에 RAM을 얼마나 잡아야 할지 감이 안 잡힐 때 쓰는 서버 RAM 용량 추정기입니다. 워커 프로세스 수, 워커 1개당 메모리, OS 기본 오버헤드, 캐시·DB 예비, 안전 여유(%)를 넣으면 권장 메모리를 계산하고 1·2·4·8·16·32·64GB 중 가장 가까운 상위 RAM 등급으로 올림해 추천합니다.

VPS·클라우드 인스턴스 사이즈를 고르거나 컨테이너에 메모리 한도를 설정하기 전에 빠르게 어림하기 좋습니다. 트래픽이 늘었을 때의 비용까지 함께 보려면 대역폭 비용 계산기, 가용성 목표와 다운타임 환산은 SLA 계산기를 함께 쓰세요.

추정 결과
워커 합계 (MB)1,024
소계 (MB)2,048
여유 포함 (MB)2,457.6
권장 RAM 등급4 GB

계산 방식

이 도구는 다음 순서로 권장 메모리를 구합니다.

  • 워커 합계 = 워커 수 × 워커당 메모리(MB)
  • 소계 = OS 오버헤드 + 워커 합계 + 캐시·DB 예비
  • 여유 포함 = 소계 × (1 + 안전 여유% ÷ 100)
  • 권장 등급 = 여유 포함 값을 1·2·4·8·16·32·64GB 중 바로 위 등급으로 올림

워커당 메모리는 어떻게 정하나

워커 1개당 메모리는 추정이 아니라 실제 앱 프로파일링에서 나와야 정확합니다. 운영 중 프로세스의 RSS를 관측하고 피크 시 사용량에 여유를 더해 잡으세요. PHP-FPM·Gunicorn·Node 클러스터처럼 멀티프로세스 모델은 워커 수 × 워커당 메모리가 그대로 더해집니다.

캐시와 DB가 더 클 수 있다

같은 서버에서 데이터베이스나 인메모리 캐시(Redis·Memcached)를 돌리면 이쪽이 워커 합계보다 메모리를 훨씬 많이 잡아먹는 경우가 흔합니다. 예를 들어 Redis 캐시에 4GB를 할당했다면 캐시·DB 예비를 4096MB로 넣어 반영하세요. DB를 별도 서버로 분리하면 이 예비를 0으로 두면 됩니다.

스택별 워커당 메모리 어림값

정확한 값은 프로파일링이 진리지만, 처음 잡을 때 출발점으로 쓸 만한 워커 1개당 RSS 어림값입니다. 라이브러리· 앱 코드 양에 따라 크게 달라지므로 운영 관측값으로 반드시 보정하세요.

스택 / 모델워커당 RSS 어림메모
PHP-FPM (Laravel/WordPress)40~120MBpm.max_children가 곧 워커 수
Gunicorn + Django/Flask80~250MBML/판다스 적재 시 급증
Node.js 클러스터60~150MB힙 한도는 --max-old-space-size로 별도 제한
Puma (Ruby/Rails)120~400MB스레드보다 프로세스(worker)당 메모리가 큼
Spring Boot (JVM)300~700MB보통 워커 1개, 힙은 -Xmx가 결정

예시로 따라가기

PHP-FPM으로 워커당 80MB, 워커 8개, OS 오버헤드 512MB, 같은 서버의 Redis에 1024MB, 안전 여유 25%를 넣었다고 합시다. 워커 합계는 8 × 80 = 640MB, 소계는 512 + 640 + 1024 = 2176MB, 여유 포함은 2176 × 1.25 = 2720MB(약 2.66GB)입니다. 등급은 바로 위인 4GB로 올림되어 4GB 인스턴스를 추천합니다. 여기서 워커를 8 → 16으로 늘리면 여유 포함이 약 3.5GB가 되어도 여전히 4GB 등급이지만, 16 → 24로 가면 8GB 등급으로 점프하는 식으로 등급이 계단처럼 변합니다.

흔한 실수 / 함정

  • 워커 수를 vCPU 수와 무조건 1:1로 잡는 것. PHP-FPM의 pm.max_children나 Gunicorn 워커는 코어보다 훨씬 많게 설정되는 경우가 흔하므로, 실제 설정 파일의 워커 수를 그대로 넣어야 합니다.
  • JVM·Node 힙을 워커당 메모리에 또 더하는 것. -Xmx·--max-old-space-size로 잡은 힙은 그 프로세스의 RSS 안에 이미 포함되므로 별도 항목으로 중복 계산하지 마세요.

자주 묻는 질문

RAM 등급은 어떻게 올림하나요?
여유를 더한 메모리 값을 1, 2, 4, 8, 16, 32, 64GB 중 그 값 이상인 가장 작은 등급으로 올립니다. 예를 들어 여유 포함 값이 5.5GB면 8GB를 추천합니다.
워커당 메모리는 무엇으로 채우나요?
운영 환경에서 측정한 프로세스당 실제 메모리(RSS) 피크에 여유를 더해 넣는 것이 가장 정확합니다. 개발 환경 수치는 보통 운영보다 낮으니 주의하세요.
데이터베이스를 별도 서버로 두면요?
DB나 캐시가 다른 서버에 있다면 캐시·DB 예비 항목을 0으로 두세요. 그러면 워커와 OS 오버헤드만 반영됩니다.
안전 여유는 몇 %가 적당한가요?
정답은 없지만 보통 20~30%를 둡니다. 트래픽 변동이 크거나 메모리 누수 가능성이 있는 워크로드는 더 여유를 두는 편이 안전합니다.
입력한 값이 서버로 전송되나요?
아니요. 모든 계산은 브라우저 안에서만 처리되며, 입력한 숫자는 어디로도 전송되거나 저장되지 않습니다.

관련 도구