[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 |
---|