티스토리 뷰

네트워크 서버에 대한 성능테스트에 대한 모니터링을 했던 내용들을 기록차원에서 step by step으로 끄적끄적~ :)

 

* 성능 및 모니터링 관련.
우선, jstat 을 사용해 보도록 함. 관련 참고글은 http://sync.egloos.com/viewer/3322205
초간단 명령어는
jstat -gc -h20 6637 3000

* visualVM 을 이용한 성능 모니터링.
원격서버에 대한 모니터링을 위한 jstatd 셋팅 참고글 : http://wryul12.tistory.com/entry/Java-VisualVM-%EC%8B%A4%ED%96%89-%EB%B0%8F-Remote-Host-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0
(하지만 이 링크는 지금 접속해 보면 차단이 된 듯 하다. 왜지? ㅜㅜ;)

jstatd 셋팅은 아래와 같이 3단계로 진행.
1. rmiregistry 실행하기
2. policy 파일 만들기
3. jstatd 실행하기

1. rmiregistry 실행하기
rmiregistry 5934 &

2. policy 파일 만들기
${JAVA_HOME}/bin 밑에 jstatd.all.policy 파일 생성 후 아래 내용 입력.
grant codebase "file:${java.home}/../lib/tools.jar"{
        permission java.security.AllPermission;
};

3. jstatd 실행하기
# ./jstatd -J-Djava.security.policy=/절대경로/jstatd.all.policy -p 1099 
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:366)
        at java.security.AccessController.checkPermission(AccessController.java:555)
        at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
        at java.lang.System.setProperty(System.java:781)
        at sun.tools.jstatd.Jstatd.main(Jstatd.java:139)

위의 에러는 99% 이상이 policy 파일 문제라는 조사결과가 나옴.
그래서 그냥 포기(?)하는 셈 치고 ${java.home}으로 바꾸니 한방에 됨~!!
(역시나 말 잘듣는 아이가 되어야 하는데 괜히 변경했다 헛다리만 짚었음. ㅜㅜ;)
그리고 혹시 모르니 policy파일의 경로도 절대경로로 한다.!

* 위의 3단계 설정을 마친 후, VisualVM에서 모니터링할 자바프로세스를 추가해 주면 된다.
그리고, 보다 세밀한 GC 모니터링을 하고 싶다면 VisualVM에서 tool->Plugin 메뉴를 통해 VisualGC 를 설치하면 eden, survivor, perm 등의 영역에 대한 모니터링을 보다 쉽게 할 수 있다.

* [참고] VisualVM으로 자바프로세스를 모니터링 할 때, jstatd를 실행시킨 계정과 같은 계정으로 실행된 자바프로세스만 모니터링 되는 것 같음. jstatd를 root로 실행시키면 모든 자바프로세스 모니터링이 가능함.

* VisualVM에서 jstatd 대신에 JMX를 사용할 수도 있는데 이럴 경우엔 해당 자바어플리케이션을 실행시킬 때 아래처럼 옵션을 주어서 실행하면 된다.
java -Dcom.sun.management.jmxremote.port=3333 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -jar networkServer.jar
(-jar 이후의 부분을 어플리케이션 실행환경에 맞춰 수정하면 됨)

* VisualVM!! 부담없이 한번 사용해 보는 것도 좋을 듯 하다. :)
아래는 모니터링 내용을 그래프로 보여주는 화면임.







공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함