티스토리 뷰
네트워크 서버에 대한 성능테스트에 대한 모니터링을 했던 내용들을 기록차원에서 step by step으로 끄적끄적~ :)
* 성능 및 모니터링 관련.
우선, jstat 을 사용해 보도록 함. 관련 참고글은 http://sync.egloos.com/viewer/3322205
gc관련 참고글 : http://blog.naver.com/salsu0/30000025219
초간단 명령어는
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 실행하기
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;
};
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!! 부담없이 한번 사용해 보는 것도 좋을 듯 하다. :)
아래는 모니터링 내용을 그래프로 보여주는 화면임.
'About 개발~~' 카테고리의 다른 글
[RabbitMQ] 설치 및 사용 for beginner :) (0) | 2014.01.27 |
---|---|
[자바] GC 관련. (0) | 2014.01.20 |
[logback] rolling 시 날짜별로 디렉토리 생성해 보자~ (0) | 2014.01.10 |
[TCP] TIME_WAIT 관련 (0) | 2014.01.07 |
[HttpClient] 응답헤더에 넣어줄 content-length 구하기 (0) | 2014.01.06 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- netty
- 오토캠핑
- http
- 이클립스
- json
- 중도
- 캠핑
- 중도캠핑장
- 톰캣
- network
- 주저리
- JavaScript
- db
- java
- SVN
- 스마트tv
- socket
- 자바
- 개발
- 안드로이드
- 발번역
- MySQL
- QR코드
- spring
- 단상
- 스프링
- 주저리주저리
- 개화예술공원
- myBatis
- 무제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함