jvm 에 대한 현재 상태를 분석하기 위해, 서버 셋팅은 jmxremote 수정 및 tomcat의 catalina.sh 을 수정합니다.
$JRE_HOME/lib/management/jmxremote.password.template 파일을 $JRE_HOME/lib/management/jmxremote.password 로 복사합니다.
복사한 파일 안에 계정에 비밀번호를 생성합니다.
monitorRole 비밀번호
controlRole 비밀번호
아이디까지 바꿔야하는 경우에는 $JRE_HOME/lib/management/jmxremote.access 파일에 아이디를 추가해야합니다.
기본 설정은 다음과 같습니다.
monitorRole readonly
controlRole readwrite
/usr/local/tomcat6/bin/catalina.sh 파일에 하단 내용을 추가합니다.
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8999 -Djava.rmi.server.hostname=host.ip -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
jconsole은 java에서 지원하는 무료 java monitoring 툴입니다.
로컬 셋팅 방법은 다음과 같습니다.
[java가 설치된 경로]/lib/jconsole.jar 을 실행시키거나,
[java가 설치된 경로]/bin/jconsole.exe 을 실행시킵니다.
Remote Process : host.ip:8999
Username / Password
monitorRole/monitorRole2014)#( : 모니터링 계정
controlRole/controlRole2014)#( : 컨트롤 계정
활용도는 현재로서는 2가지 용도로 사용될 예정입니다.
- mysql 커넥션 확인 용도 현재 Idle 갯수를 알 수 있는 numIdle 과 활성화 여부인 numActive 등을 알 수 있습니다.
maxActive : 최대 active connection 개수 maxIdle : 최대 idle connection 개수 minIdle : 최소 idle connection 개수 maxWait : 최대 connection 대기 시갂 numActive : 현재 active connection 개수 numIdle : 현재 idle connection 개수
- JAVA 단에서 발생하는 Deadlock 상황 확인
2018.06.27 추가 사항
-Djava.rmi.server.hostname=host.ip
초창기에는 외부에서 접속가능하도록
monitorRole readonly
controlRole readwrite
에 대한 jmxremote.access 에 대한 파일을 수정했습니다. 그러나 현재는 회사 내부의 ip와 전체 서버의 ip가 하나의 망으로 구현되어있어, 별도의 jmxremote.access 설정이 없이, 바로 host.ip를 도메인주소가 아닌, host ip로 연결하여 테스트가 가능하게 되었습니다.
현재는, jconsole 보다, jvisualvm 을 더 자주 사용합니다.