[Tomcat] 메모리 설정 방법 – JAVA_OPTS / Heap Size 튜닝 완벽 정리

2025. 3. 25. 12:53·프로그래밍/Tomcat

[Tomcat] 메모리 설정 방법 – JAVA_OPTS / Heap Size 튜닝 완벽 정리

톰캣(Tomcat)을 운영하다 보면 OutOfMemoryError나 서버 느림 현상을 겪을 수 있습니다.
이럴 때 가장 먼저 확인해야 할 부분은 JVM 메모리 설정
이 글에서는 JAVA_OPTS를 이용한 메모리 설정, -Xms, -Xmx 옵션 의미, 그리고 실무에서 추천하는 힙 사이즈 조정 팁까지 모두 정리해드립니다.


✅ JAVA_OPTS vs CATALINA_OPTS 차이

톰캣에서 JVM 옵션을 설정할 때는 JAVA_OPTS나 CATALINA_OPTS 환경변수를 사용할 수 있습니다.

  • JAVA_OPTS: 톰캣 실행 시 항상 적용됨 (start, stop 등 모두)
  • CATALINA_OPTS: 톰캣 구동 시에만 적용 (start 시에만)

→ 보통 메모리 관련 설정은 JAVA_OPTS 또는 CATALINA_OPTS 둘 중 하나에만 설정하면 됩니다.


✅ setenv.sh (또는 setenv.bat)로 설정

톰캣 홈 경로의 bin 폴더에 setenv.sh (리눅스) 또는 setenv.bat (윈도우)을 만들어 설정합니다.

# setenv.sh (리눅스/macOS)
export JAVA_OPTS="-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m"
:: setenv.bat (Windows)
set JAVA_OPTS=-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m

톰캣이 실행될 때 이 파일이 자동으로 불려옵니다. 없으면 직접 만들어도 무방합니다.


✅ 주요 JVM 메모리 옵션 설명

옵션 설명
-Xms JVM 시작 시 할당할 최소 힙 크기
-Xmx JVM이 사용할 수 있는 최대 힙 크기
-XX:PermSize 클래스 메타데이터 저장 영역 초기 크기 (Java 7 이하)
-XX:MaxPermSize PermGen 최대 크기 (Java 7 이하)
-XX:MaxMetaspaceSize (Java 8 이상) PermGen 대신 Metaspace 영역 최대 크기

TIP: Java 8 이상에서는 PermSize 대신 Metaspace 옵션을 사용해야 합니다.


✅ 실무에서 추천하는 힙 설정 예시

운영 환경에서 메모리 사용량이 많지 않다면 아래와 같이 설정합니다:


export JAVA_OPTS="-Xms512m -Xmx1024m -XX:MaxMetaspaceSize=256m"

메모리 많이 쓰는 WAS라면:


export JAVA_OPTS="-Xms1024m -Xmx2048m -XX:MaxMetaspaceSize=512m"

주의: 서버 메모리(RAM) 크기를 초과하지 않도록 설정하세요.


✅ 적용 후 확인 방법

톰캣 구동 후 아래 명령어로 메모리 설정이 제대로 반영됐는지 확인할 수 있습니다.

ps aux | grep tomcat

또는 jcmd, jvisualvm, jconsole 등 툴로도 확인 가능


📌 마무리

톰캣이 느리거나 OutOfMemory 에러가 발생한다면 가장 먼저 JVM 메모리 설정을 점검해보세요.

setenv.sh 파일을 통해 -Xms / -Xmx를 명확하게 설정하면 서버 안정성도 높아지고 성능도 개선됩니다.

도움이 되셨다면 공감 / 댓글 부탁드립니다 😊

반응형
저작자표시 비영리 (새창열림)

'프로그래밍 > Tomcat' 카테고리의 다른 글

서블릿 버전별 web.xml 선언  (0) 2021.12.08
'프로그래밍/Tomcat' 카테고리의 다른 글
  • 서블릿 버전별 web.xml 선언
큐레이트
큐레이트
저의 일상을 기록하는 블로그입니다.
  • 큐레이트
    큐레이트의 기록
    큐레이트
  • 전체
    오늘
    어제
    • 분류 전체보기 (193) N
      • 국내여행 (37)
        • 애견여행 (33)
        • 맛집여행 (2)
      • 프로그래밍 (85) N
        • C# (24)
        • Python (24)
        • Flutter (5)
        • .NET (4)
        • ASP (7)
        • Next.js (3) N
        • Html (5)
        • Tomcat (2)
        • typescript (3)
        • etc (8)
      • 일상생활 (71)
        • 다이어트일지 (70)
        • 기타 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 복이랑스마트스토어
    • 복이랑블로그
  • 공지사항

    • 블로그 소개
  • 인기 글

  • 태그

    오운완
    애견여행
    헬스
    C#
    운동일지
    다이어트일지
    제주도애견동반여행
    식단
    체중기록
    오블완
    파이썬
    애견동반여행
    티스토리챌린지
    국내여행
    웹개발
    HTML
    자동매매
    일상생활
    DevExpress
    Flutter
    제주도
    Python
    식단관리
    pt
    다이어트 일지
    자동화
    FastAPI
    iis
    애견동반
    다이어트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
큐레이트
[Tomcat] 메모리 설정 방법 – JAVA_OPTS / Heap Size 튜닝 완벽 정리
상단으로

티스토리툴바