피드로 돌아가기
Running Sonatype Nexus 3 on a 1 Gi RAM VPS — A Practical Guide
Dev.toDev.to
Infrastructure

1 Gi RAM VPS에서 Nexus 3를 구동하는 극한의 JVM 튜닝 가이드

Running Sonatype Nexus 3 on a 1 Gi RAM VPS — A Practical Guide

Anatole HAGBE2026년 4월 5일9intermediate

Context

공식 권장 사양 8 Gi RAM의 Nexus 3를 1 Gi RAM VPS 환경에서 구동해야 하는 제약 조건 발생. JVM의 기본 메모리 설정 사용 시 OOM-killed 현상으로 인한 컨테이너 종료 및 데이터 손실 위험 상존.

Technical Solution

  • -Xms128m와 -Xmx384m 설정을 통해 힙 메모리 시작점과 상한선을 분리하여 부팅 시 메모리 점유 최소화
  • -XX:MaxDirectMemorySize=192m 설정을 통해 I/O 처리를 위한 오프힙 버퍼 영역을 엄격히 제한
  • G1GC 도입 및 -XX:G1HeapRegionSize=4m 설정을 통해 메모리 파편화 방지와 효율적인 가비지 컬렉션 수행
  • -XX:+UseStringDeduplication 활성화로 중복 문자열을 제거하여 힙 메모리 사용량 5~10% 추가 절감
  • 2 Gi 크기의 Swap 파일을 생성하고 vm.swappiness=10 설정을 적용하여 OOM-killed 방지를 위한 최소한의 안전망 확보
  • Traefik을 이용한 TLS Termination 구조로 Nexus 내부 통신을 HTTP로 단순화하여 오버헤드 감소

Impact

  • 유휴 상태(Idle) 기준 메모리 사용량 412 MiB 기록
  • 메모리 제한 700 MiB 대비 약 58.9%의 점유율로 안정적인 구동 확인
  • vm.swappiness 10 설정으로 정상 동작 중 SSD 스왑 발생 최소화

Key Takeaway

제한된 자원 환경에서 JVM 애플리케이션 운영 시 힙과 오프힙 메모리를 정밀하게 분리 설계하고 Swap을 성능 향상이 아닌 시스템 생존을 위한 안전장치로 활용하는 전략이 필요함.


JVM 기반 서비스 배포 시 OS 및 사이드카 컨테이너의 기본 점유량을 제외한 실제 가용 메모리를 산출하여 -Xmx를 설정하고 반드시 Swap 영역을 확보할 것

원문 읽기