🙆‍♂️ import 🙇‍♂️

자바 성능 튜닝 이야기[ProgrammingInsight-이상민]


Profiling Tool은 대부분 느린 메소드, 클래스 검색을 목적으로 한다.
APM Tool은 목적이 상이한데, 주로 문제점 진단이나 시스템 모니터링 운영에 강하다.

Java Application 분석 Profiling Tool은 크게 상용, 비 상용으로 나뉜다.

상용 Profiling Tool

상용 Tool로는 Quest SoftwareJProbeej-technologiesJProfiler, YourKitYourKit이라는 Tool이 있다.

비 상용 Profiling Tool

비 상용 Tool로는 넷빈즈에서 사용하는 Profiler가 있고, Eclipse에서 사용하는 `TPTP(Eclipse Test & Performance Tools Platform)도 있다.

TPTP Tool은 Range가 굉장히 넓어Profiling에 대한 내용 공부만 해도 양이 상당하다.



Profiling Tool이 제공하는 기본 기능 중 각각의 Tool들이 제공하는 기능은 다양하고 상이하지만, 응답 시간 프로파일링(Response Time Profiling)메모리 프로파일링(Memory Profiling)기능은 기본적으로 제공한다.

Response Time Profiling

Response Time Profiling을 시행하는 이유는 너무 당연하게도 응답 시간 측정을 위해서다.

하나의 클래스 내에 사용되는 메소드 단위 응답 시간을 측정한다.

Tool에 따라 소스 라인 단위 응답 속도 측정을 할 수도 있다.

Response Time Profiling 시에는 보통 CPU 시간, 대기 시간 이렇게 두 가지 시간이 제공된다.

CPU 시간과 대기시간??

하나의 메소드, 한 소스 라인을 수행하는데 소요되는 시간은 무조건 CPU 시간대기 시간으로 나뉜다.

CPU 시간은 CPU를 점유한 시간을 의미하고, 대기 시간은 CPU를 점유하지 않고 대기하는 시간을 의미한다.

따라서 실제 소요 시간(Clock Time) = CPU 시간 + 대기 시간 으로 계산할 수 있다.

CPU 시간은 Tool에 따라 Thread 시간으로 표시되기도 한다.

Thread 시간해당 Thread에서 CPU를 점유한 시간이기 때문 표현만 다를 뿐 같은 시간이다.

Memory Profiling

Memory Profiling을 시행하는 이유적은 횟수의 사용에도 불구하고 GC의 대상이 되는 부분을 찾거나, Memory Leak이 발생하는 부분을 찾기 위함이다.

Memory Profiling에는 클래스 및 메소드 단위의 메모리 사용량이 분석된다.

Tool에 따라 소스 라인 단위 메모리 사용량도 측정을 할 수도 있다.


Profiling Tool을 마법의 자동 분석 도구로 인지하는 경우가 많지만, APM Tool이던, Profiling Tool이던 자동으로 분석을 진행해주는 Tool은 없다.

Tool에서 분석을 하려면 해당 메소드가 수행 되어야 하고, 수행 되지 않는 메소드는 분석이 되지 않는다.

문제 되는 메소드가 수행 되어야 하므로, 메모리 부족 현상이 가장 분석하고 찾아내기 어렵다.

profile
🚀 기록보단 길록을 20.10 ~ 22.02 ⭐ Move To : https://gil-log.github.io/

0개의 댓글