1. 들어가며
자바 애플리케이션을 운영하면서 성능 문제를 분석해야하는 경우가 있다. 이를 위해 async-profiler를 사용할 수 있는데 이를 이해하기 위한 개념을 알아보자.
2. 성능 분석할 때 주로 살펴보는 지표
성능을 분석할 때는 크게 아래 네 가지를 확인하는 경우가 많다.
1) CPU 시간
- 스레드가 실제로 CPU 코어 위에서 명령을 실행한 시간
- 이 값이 크다면 CPU 자원을 많이 소모하고 있으며, 계산이 무겁다는 증거
2) Allocation (바이트 생성량)
- 어디서 얼마나 많이 객체를 만들었는가 → 메모리 사용량
- Allocation 지표가 크게 나오고, Memory pressure, GC 빈도 증가가 보인다면 유심히 봐야함
3) Wall-Clock 시간
- 클라이언트가 체감하는 총 경과 시간
- CPU 시간과 더불어 Blocking I/O, 락 대기, 스케줄링 지연과 같은 off-CPU 구간을 포함
- Wall 만 크게 나오고 CPU 는 작게 나온다면 블로킹되는 지점이 있다는 뜻
- P95, P99 값이 높다면 먼저 확인해보면 좋은 값
4) Lock / Contention