Post

VisualVM 프로파일러로 Java 메소드 실행시간 측정하기

Visual VM 프로파일러 사용하기


연말이어서 새롭게 개발해야할 기능들은 없는편이다! 이때를 틈타 Q&A 플랫폼의 최적화를 하기로 했다. 이전에 Memory leak 를 찾아내기 위해서 다운받았던 visual vm 으로 어느 곳에서 병목현상이 있는지 알아 낼 수 있다고 하여서 한번 시도해 보았다’

Visual VM 설정하기


profiler 를 사용하면 어떤 method 에서 몇초가 걸렸는지 바로 알 수 있다. 하지만 시스템의 성능에 아주 큰 영향을 미치기 때문에 로컬에서 사용해야한다. 뿐만 아니라 회사에서 remote workstation 에서 개발을 진행하고 있었는데 remote 환경에서는 profiling 을 지원하지 않기 때문에 꼭 visual vm 와 같은 환경에서 application 을 실행해야한다.

저번과 마찬가지로 jmx 를 아래처럼 열어주고

1
2
3
4
5
6
7
8
java \
-Dcom.sun.management.jmxremote.local.only=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.port=8500 \
-Dcom.sun.management.jmxremote.rmi.port=8500 \
-Djava.rmi.server.hostname=12.52.130.xx \
-jar qna.jar

visual vm 에 들어가서 local 에 보면 우리가 실행한 application 이 떠있다. 그것을 클릭하고 Profiler 를 누른다! 그리고 우리고 관찰하고 싶어한 동작을 실행하면 어느 method 가 얼마나 걸리는지 알 수가 있다.

결과는?


DB와 접근하는 method 가 상당한 시간이 걸렸고 또 view 를 보여주는 쪽이 시간이 상당히 걸렸다. (velocity 를 사용하고 있는데 render velocity 가 시간이 너무 길었다) view 쪽을 손볼 생각은 잘 안하고 있었는데 이 기회에 한번 손을 볼 수 있어서 좋았다.

This post is licensed under CC BY 4.0 by the author.

© 병욱. Some rights reserved.