프로그램/Java

자바 모니터링 툴 visualVM visualGC

milktea.kang 2013. 9. 24. 13:41

java 에서 제공하는 모니터링툴 visualVM

http://visualvm.java.net/gettingstarted.html


다운로드로 가서 zip 파일을 받아 압축을 풀고 bin/visualvm.exe 을 실행하면 애플릿이 뜬다


원격 pc의 vm을 모니터링 하려면 아래를 보라

http://visualvm.java.net/applications_remote.html


remote 기능을 사용하려면 설정이 좀 필요하다


jstatd를 사용하기 위한 설정

(http://docs.oracle.com/javase/6/docs/technotes/tools/share/jstatd.html)


원격 PC의 $JAVA_HOME/jre/lib/security/java.policy 파일을 수정한다 (빨간색칠 부분을 추가해준다)

grant codeBase "file:${{java.ext.dirs}}/*" {

        permission java.security.AllPermission;

};


// default permissions granted to all domains


grant {

        // Allows any thread to stop itself using the java.lang.Thread.stop()

        주석과 함께 설정들...생략...

        permission java.util.PropertyPermission "java.vm.vendor", "read";

        permission java.util.PropertyPermission "java.vm.name", "read";


        permission java.security.AllPermission;

};


위 설정을 안하면 다음과 같은 오류가 나올 것이다

Could not create remote object

access denied ("java.util.PropertyPermission" "java.rmi.server.ignoreSubClasses" "write")

java.security.AccessControlException: access denied ("java.util.PropertyPermission"

"java.rmi.server.ignoreSubClasses" "write")

at java.security.AccessControlContext.checkPermission(AccessControlContext.java:372)

at java.security.AccessController.checkPermission(AccessController.java:559)

at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)

at java.lang.System.setProperty(System.java:782)

at sun.tools.jstatd.Jstatd.main(Jstatd.java:139)


원격 PC에서 다음 명령을 실행

[root@localhost ~]# rmiregistry 2020&

[root@localhost ~]# jstatd -J-Djava.security.policy=all.policy -p 2020&


이제 http://visualvm.java.net/applications_remote.html 의 설명대로 따라해본다



jmx를 사용하기 위한 설정

(http://visualvm.java.net/jmx_connections.html)


톰캣을 예로 들면

$CATALINA_HOME/bin/catalina.sh 파일에 JAVA_OPTS를 찾아서 수정한다

빨간색 세줄을 추가해주면 될것이다

JAVA_OPTS="$JAVA_OPTS .... 내용 생략 ..."

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=3333"

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"


설정이 완료되면 톰캣을 재시작 한다


이제 http://visualvm.java.net/jmx_connections.html 의 설명대로 따라해본다



visualGC는 visualVM의 플러그인으로 설치할 수 있다

visualVM상단의 Tools -> Plugins -> Available Plugins 에 보면 있다

체크박스 선택하고 왼쪽하단에 install을 누르면 설치된다

설치해보면 오른쪽에 visualGC가 나온다. 안보이면 visualVM을 껏다가 켜보시라





'프로그램 > Java' 카테고리의 다른 글

java 랜덤 범위 지정  (0) 2014.10.24
spring cross-domain filter  (0) 2014.07.22
직렬화 (Serialize)  (0) 2014.02.21
json between object (codehaus.jackson)  (0) 2014.01.09
android adb shell  (0) 2012.11.02