요즘 계속해서 웹서버와 WAS 관련해서 포스팅을 하고 있습니다. VM 설치부터 아파치 및 톰캣 연동 그리고 다양한 설정들도 해봤는데요 관련 부분이 궁금하시다면 제 카테고리 중 웹서버 카테고리를 참고하시면 좋을 것 같습니다.

이번 시간에는 톰캣 상세 설정 몇 가지를 알아보려고 합니다.

현재 상태는 VMware15 CentOS7 Apache + Tomcat 연동까지 마친 상태입니다.

먼저 가비지 컬렉션 jstat를 이용한 모니터링하는 방법에 대해서 알려드리겠습니다.

jstat -gcutil -h20 36259 1000

저의 PID는 36259입니다. gcutil 옵션을 통해서 1초마다 반복되게 하였습니다.

jstat를 사용할 수 없으면

yum install java-1.8.0-openjdk-devel

을 통해 설치하여 사용하실 수 있습니다.

자바는 New 영역과 Old 영역으로 메모리를 분할하고, 신규로 생성되는 객체는 New 영역에 보관하고, 오랫동안 살아있는 객체는 Old 영역에 보관합니다.

New 영역은 Eden(에덴), S0, S1 영역으로 구분되는데요.

새로 생성되는 객체는 Eden 영역에 보관되고 Eden이 100%다 차게 되면 사용하지 않은 객체는 제거하고 사용되고 있는 객체는 S0 영역으로 이동합니다.

이 상태에서 Eden 영역이 또다시 100%가 되면 Eden 영역과 S0 영역에서 사용하지 않은 객체를 다시 제거하고 S1 영역으로 이동합니다.

이 작업을 계속해서 반복하면서 오랫동안 남아 있는 객체를 Old 영역으로 이동하게 되는 방식입니다.

S0 : S0 영역 사용률

S1 : S1 영역 사용률

E : Eden 영역 사용률

O : Old 영역 사용률

M : Meta 영역 사용률

CCS : Compressed Class Space 영역 사용률

YGC : Young 영역 GC 횟수

YGCT : Young 영역 GC에 걸린 시간

FGC : Full GC 횟수

FGCT : Full GC에 걸린 시간

GCT : GC에 걸린 시간(YGCT + FGCT)

Heap Size를 설정해보겠습니다.

먼저 vi setenv.sh를 생성합니다.

export JAVA_HOME="본인의 JDK 위치"

export CATALINA_OPTS="$CATALINA_OPTS -Djava.awt.headless=true -server"

export CATALINA_OPTS="$CATALINA_OPTS -Xms1024m -Xmx1024m -XX:NewRatio=3"

export CATALINA_OPTS="$CATALINA_OPTS -XX:MaxPermSize=256m -Xss256k"

내용을 입력합니다.

요즘은 프레임워크를 사용하기 때문에 MaxMetaSpaceSize가 256m 이상 되어야 합니다 (256~512까지, 클래스 파일과 메서드들은 여기에 올라갑니다.)

프레임워크는 사용하는 부분만 사용하고 안 쓰는 부분이면 disable를 해야 합니다.

최소 256을 사용하다가 메모리딕이 발생되면 카탈리나에서 확인을 해서 조절해야 합니다.

여기서는 가장 기본값만 설정하였고 본인의 설정에 따라 각자 살을 붙여야 합니다. 설정을 하지 않는다면 64용량밖에 사용되지 않아 매일 다운되는 상황이 나타나게 됩니다.

정상적으로 값이 변경된 걸 확인하실 수 있습니다.

실무에서는 보안 문제로 WAS 권한을 사용자에게 주어 Tomcat을 올리고 내리는 경우가 많습니다.

Tomcat이라는 사용자 계정을 생성하고 Tomcat 권한을 줘보겠습니다.

server.xml에서 SecurityListener가 주석 처리가 되어있다면 주석을 해제하시고 checkedOsUsers="root"를 추가합니다 root 권한으로 tomcat을 가동하지 못하도록 하는 옵션입니다.

또한 JreMemoryLeakPreventionListener가 주석 처리되어 있다면 주석을 제거해 주세요. 메모리 누수 탐지 기능입니다.

root에서 타임 캣을 올리지 못하도록 잘 설정되어 있음을 확인합니다.

그리고 사용자에서 Tomcat이 잘 올라가는지 start 해봅니다.

다음은 openfile 설정입니다.

ulimit -a 명령어를 입력하면 1024로 디폴트 설정이 되어 있는데요. 1024를 넘어가게 되면 에러가 발생됩니다. 그래서 넉넉하게 8192로 세팅해보겠습니다.

limits.conf 파일에 다음과 같이 설정을 합니다.

타임 캣을 재시작 해주고 변경한 설정값이 잘 적용되었는지 확인합니다.

다음에는 톰캣 설정을 좀 더 살펴보고 로드밸런싱을 해보겠습니다.

감사합니다.

댓글
최근에 올라온 글
최근에 달린 댓글
링크
Total
Today
Yesterday