Spring Framework 을 이용한 Web Application을 개발 할 때 주로 Tomcat Server 를 사용 하고 있다. Tomcat server의 메모리 상태를 Java의 jConsole을 이용 하여 실시간으로 모니터링 할 수 있는 방법을 알아보자.

아래는 Windows 2008 R2 에서 Tomcat을 Windows Service 로 등록 되어 사용 하고 있다는 가정하에 설명을 하겠다. 그리고 tomcat 버전은 6로 했다.우선 tomcat home directory 에 가서 tomcat6w.exe 를 실행 하여 Java 탭을 선택한다.

현재 아래와 같은 Java Options 이 설정되어 있다. 실제 운영에 사용 하는 Java Options 이다. Xms 와 Xmx 는 Physical memory의 절반 정도로 잡아 주고 PermSize는 512M 이상으로 잡아 준다. 여기서는 1G 정도로 잡아 주었다.

-Dcatalina.base=C:\apache-tomcat-6.0.37
-Dcatalina.home=C:\apache-tomcat-6.0.37
-Djava.endorsed.dirs=C:\apache-tomcat-6.0.37\endorsed
-Djava.io.tmpdir=C:\apache-tomcat-6.0.37\temp
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=C:\apache-tomcat-6.0.37\conf\logging.properties
-Djava.awt.headless=true
-Dfile.encoding=UTF-8
-Xms2048m
-Xmx2048m
-XX:NewSize=1024m
-XX:PermSize=1024m
-XX:+DisableExplicitGC

그럼 이제 Tomcat server를 jConsole을 이용 하여 모니터링 하기 위한 JMX (Java Management Extensions) remote access option 을 설정해 보자. jConsole 을 이요하여 Tomcat을 모니커링 하기 위해서는 Tomcat 이 시작 될 때 아래와 같은 JMX option 들을 설정해 주어야 한다.

여기서는 Windows Service 로 tomcat을 등록하여 사용 하므로 위에서 위에서 tomcat6w.exe 를 실행시켜 java options 을 등록해 준 곳에 위의 JMX 설정을 해 준다.

이렇게 등록을 시켜 주고 Tomcat Server 를 다시 시작한다.

그리고 나서 Java home directory에서 bin\jconsole.exe 를 실행 한다. 그리고 Remote Process 를 선택한후 아래와 같이 입력을 한다. Remote server에 있는 Tomcat server를 모니터링 하기 위해서는 해당 IP 주소를 입력 해 주면 된다.

이렇게 하고 Connect 를 클릭 하면 아래와 같이 현재 실행중인 Tomcat 서버의 메모리 상황을 모니터링 할 수 있다.

 

** Reference

https://www.mkyong.com/tomcat/jconsole-jmx-remote-access-on-tomcat/