Tomcat JVM Option, arguments
안녕하세요.
지금까지 apache tomcat 설치 연동 database 연동까지
기초적인 부분을 기술해왔는데
이제 뭐를 업로드할까 생각 중에 tomcat을 기본설치만 하고
중요한 jvm option들과 기초적인 튜닝 방법에 대해서 알아보려고 합니다.
이전에 제글을 보고 tomcat을 설치하신분들은
tomcat-9/bin/catalina.sh 파일에
JAVA_HOME 설정을 했을겁니다.
요부분 주석처리하고 시작하겠습니다.

pwd
/home/hunhee/tomcat-9/bin
vi catalina.sh
#JAVA_HOME 주석처리
#이부분은 저랑 첫번째 글부터 같이 해오신분들만 하시면되요!
#다른글 보고오신분은 스킵하셔도됩니다.
###JAVA_HOME###
#JAVA_HOME=/home/hunhee/install_files/jdk1.8.0_461
주석처리 완료했습니다.
저희는 jvm option 들이나 tomcat에 추가적으로 해줄 옵션들은
catalina.sh에 관리안하고
setenv.sh 라는 파일을 만들어서 따로 관리하겠습니다.
tomcat에서 setenv.sh 파일을 bin 디렉토리에 만들면 바로 읽을수 있게
아주 친절한 설정이 있습니다.

위에 캡쳐화면처럼 setenv를 검색하시면 166행쪽에서 setenv.sh 파일이
있으면 참조해서 실행시키는 내용이 적혀있습니다.
이제 setenv.sh 파일을 만들어서 옵션들을 설정 해주도록 하겠습니다.
pwd
/home/hunhee/tomcat-9/bin
vi setenv.sh
#!/bin/sh
###setenv.sh 20251230 ###
###JAVA_HOME###
JAVA_HOME=/home/hunhee/install_files/jdk1.8.0_461
###JVM OPTION###
CATALINA_OPTS="${CATALINA_OPTS} -Xms2048M -Xmx2048M"
CATALINA_OPTS="${CATALINA_OPTS} -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"
#저장후 종료
wq!
운영서버가아닌 저희 로컬컴퓨터에 만드는 개발서버기 때문에
JAVA_HOME
heap, metaspace 메모리정도만 설정 해주도록 하겠습니다.
jvm option에는 gc ,hdump 등 많은 기능이 있지만 저희는 초심자기때문에
요정도만 설정 해주겠습니다.

해당 내용을 저장하고 재기동 해서 JAVA경로와
heap,metaspace 설정이 잘 먹혔는지 확인해보겠습니다.
*tomcat 실행 결과
Using JAE_HOME: 에 저희가 넣은 JAVA_HOME 과
Using CATALINA_OPTS: 에 저희가 넣은 설정값 힙메모리, 메타 스페이스 사이즈 사용되고 있네요

tomcat 재기동 후 프로세스 결과입니다.
ps -ef |grep tomcat 으로 프로세스 확인결과 저희가 설정한 jvm option들이 잘 들어가 있네요

그외에 다른 jvm option 들 설명 잠깐하고 끝내겠습니다.
- 메모리 관리 옵션:
- -Xms<size>: JVM 시작 시 할당될 최소 힙 메모리 크기 (예: -Xms1024m).
- -Xmx<size>: JVM이 사용할 수 있는 최대 힙 메모리 크기 (예: -Xmx2048m).
- -XX:MetaspaceSize<size> :메타스페이스 사이즈
- -XX:MaxMetaspaceSize<size>:메타스페이스 최대사이즈
- 가비지 컬렉션(GC) 관련 옵션:
- -verbosegc: GC 동작 시 로그를 남겨 GC 활동을 모니터링하게 합니다.
- -XX:+PrintGCDetails, -XX:+PrintGCDateStamps: GC 로그 상세 정보 출력.
- -XX:+UseG1GC, -XX:+UseParallelGC 등: 특정 GC 알고리즘 선택.
- 성능 및 튜닝 옵션:
- -server: 서버 모드 JVM 활성화 (대규모 애플리케이션에 최적화).
- -XX:+AggressiveOpts: 실험적인 최적화 기능 활성화 (JVM 버전에 따라 다름).
- -D<property>=<value>: 시스템 속성 설정 (예: -Dfile.encoding=UTF-8).
- 기타 디버깅 및 로깅:
- -XX:+HeapDumpOnOutOfMemoryError: OOM 발생 시 힙덤프 생성.
- -XX:ErrorFile=<path>: 치명적 에러 발생 시 에러 로그 파일 경로 지정.
이중에서 운영서버를 운영시에 필요한 옵션들을 setenv.sh에 넣고 관리하면 편하겠죠?
다음시간에는 또 어떤내용의 글을 포스팅할지고민해보고 다음시간에 뵙도록하겠습니다.
'WEB,WAS 및 기술' 카테고리의 다른 글
| [WEB/WAS] 리눅스에 Nginx 를 설치해보자! (0) | 2026.01.05 |
|---|---|
| [WEB/WAS] Tomcat 엔진 하나로 컨테이너 2개 만들기 (0) | 2025.12.31 |
| [WEB/WAS] Tomcat Oracle database 연동 (0) | 2025.12.29 |
| [WEB/WAS] ssl 인증서 생성후 apache ssl 설정 해보기! (0) | 2025.12.24 |
| [WEB/WAS]가상호스트 Apache Virtualhost,vhost 설정 (0) | 2025.12.23 |