본문 바로가기
TIP ::

Tomcat 설치 시 setenv.sh 설정, 왜 필수일까요?

by 히로:: 2025. 4. 17.

Tomcat을 리눅스 서버에 설치할 때 많이 간과하는 부분이 바로 setenv.sh를 통한 JVM 메모리 설정인데요. 특히 서버에 Tomcat 인스턴스를 여러 개 설치하는 경우, 이 설정은 단순한 성능 튜닝을 넘어 서버 안정성 확보에 필수적인 요소가 됩니다.

setenv.sh란?

Tomcat은 실행 시 내부적으로 JVM을 구동합니다. 이때 사용하는 자바 힙 메모리 크기를 설정하지 않으면, JVM은 기본값을 사용하게 되는데요, 이 기본값은 사용하는 JDK 버전과 서버 환경에 따라 달라집니다.

JDK 버전에 따른 기본 메모리 동작

  • JDK 8 (HotSpot 기준)
    • Xms(초기 힙): 약 256MB
    • Xmx(최대 힙): 최대 1~4GB
    • 기본적으로 전체 시스템 메모리의 25% 수준까지 사용 가능합니다
  • JDK 11 이상
    • JVM이 자동으로 메모리와 CPU 개수를 감지하여 설정합니다
    • Xmx는 전체 메모리의 약 25%로 잡힙니다
    • 하지만 여러 인스턴스가 동시 실행되면 자원 경합 위험이 증가합니다

Tomcat 인스턴스 수와의 관계

서버에 Tomcat을 4개 설치하고 setenv.sh 설정 없이 운영하면, 각 인스턴스가 JVM 기본값을 기준으로 최대 4GB까지 메모리를 사용할 수 있습니다. 이 경우 16GB 메모리의 대부분을 차지하게 되어, 서버 전체가 느려지거나 충돌이 발생할 수 있어요.

해결 방법: setenv.sh로 명시 설정

각 Tomcat 인스턴스의 bin/ 디렉터리에 아래와 같이 setenv.sh 파일을 추가해주세요:

#!/bin/bash
export JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC"
  • Xms: 초기 힙 메모리
  • Xmx: 최대 힙 메모리
  • UseG1GC: GC 성능 최적화

이렇게 명시적으로 설정하면, Tomcat 간 자원 충돌을 막고 예측 가능한 운영이 가능합니다.

JDK 버전별 추천 설정값 예시

JDK 버전 서버 메모리 추천 Xms 추천 Xmx

JDK 8 16GB 512MB 1024MB
JDK 11 16GB 1GB 2GB
JDK 17+ 16GB 1GB 2~3GB

 Tomcat 인스턴스가 많아질수록 Xmx 값을 더 낮게 분배하는 것이 안정적입니다.

마무리하며

Tomcat 설치 시 setenv.sh 설정은 선택이 아닌 필수입니다. 특히 다중 인스턴스를 운영하거나 고부하 환경이라면, JVM 메모리 설정이 서버 안정성과 직결됩니다.

 

지금 운영 중인 Tomcat에 setenv.sh가 없다면, 오늘 바로 설정해보시는 걸 추천드립니다.

반응형

댓글