본문 바로가기
기술&교육

tomcat 8.5 튜닝

by 베어그릴스 2023. 4. 6.
반응형

톰캣이란(Tomcat)?

톰캣(Tomcat)은 흔히 WAS(Web Application Service)라고 하며, 아파치 소프트웨어 재단(Apache Software Foundation)의 애플리케이션 서버로서, 자바 서블릿을 실행하고 JSP(Java Server Pages)가 포함된 웹페이지를 만들어주며, 톰캣은 웹 서버와 연동하여 실행할 수 있는 자바 환경을 제공하고, 관리 도구를 이용해서 설정을 변경할 수도 있지만, XML 파일을 편집해서 설정할 수도 있습니다.

또한

자바 서블릿을 실행키고 JSP코드가 포함되어 있는 웹 페이지를 만들어줍니다.

톰캣

java 8 버전 이상에 tomcat 8 버전 이상일때 튜닝방법에 대해서 설명 하겠습니다.

 

리눅스 환경일 경우 톰캣 bin 디렉토리에 setenv.sh 파일을 생성합니다.

윈도우 환경일 경우 톰캣 bin 디렉토리에 setenv.bat 파일을 생성합니다.

 

OS 따라 파일 확장자만 다르지 튜닝에 있어 코드는 동일합니다.

 

JVM Memory Setting

아래는 서버내 메모리가 4기가에 단독 웹서버일때를 가정 하였습니다.

JVM의 Heap 메모리 크기는 상황에 맞춰 셋팅하시면 됩니다.

 

주의 할점은 최소 / 최대 Heap Memory 크기를 동일하게 해주는게 가장 효율적이라고 합니다.

 

그리고 서버내 여유분의 메모리를 남겨놔야 배치를 돌리거나 그럴때 여유분의 메모리로 돌려야 하기 때문에 항상 메모리는 여유를 남겨둡니다.

export JAVA_OPTS="$JAVA_OPTS -server"
#최소 Heap Memory 크기
export JAVA_OPTS="$JAVA_OPTS -Xmx3072m"
#최대 Heap Memory 크기
export JAVA_OPTS="$JAVA_OPTS -Xms3072m"
#최소 MetaSpace(Perm) 크기
export JAVA_OPTS="$JAVA_OPTS -XX:MetaspaceSize=1024m"
#최대 MetaSpace(Perm) 크기
export JAVA_OPTS="$JAVA_OPTS -XX:MaxMetaspaceSize=1024m"

 

GC, Heapdump Setting

아래 GC Log와 Heapdump log의 경로를 지정해줍니다.

#G1GC 사용 (JDK 1.8 이상)
export JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC"
#JVM에 대한 GC 기록 남김
export JAVA_OPTS="$JAVA_OPTS -verbose:gc"
#GC Log 경로 지정
export JAVA_OPTS="$JAVA_OPTS -Xloggc:/경로입력/gc.log_`date +%Y%m%d%H%M%S`"
#GC 수행 상세 정보 출력
export JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDetails"
#GC 발생 시간 출력
export JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCTimeStamps"
#GC 발생 날짜 출력 (YYYY-MM-DD)
export JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDateStamps"
#OOM 발생시 Heapdump 생성
export JAVA_OPTS="$JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError"
#Heapdump 경로 지정
export JAVA_OPTS="$JAVA_OPTS -XX:HeapDumpPath=/경로입력/java_pid.hprof"
#GC 수행 Region 정보 확인 가능
export JAVA_OPTS="$JAVA_OPTS -XX:+PrintAdaptiveSizePolicy"
#tomcat 구동 시 더이상의 대기 상태는 발생하지 않는다.
export JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom"
#IPv4 를 우선적으로 사용
export JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"
#아래는 스카우터가 설치되었을경우에만...
#스카우터 이름 설정
export JAVA_OPTS="$JAVA_OPTS -Dobj_name=azksys"
#스카우터 연동
export JAVA_OPTS="$JAVA_OPTS -javaagent:/home/azk/scouter/agent.java/scouter.agent.jar"

 

오늘도 보람찬 생존 ^.^

반응형

댓글