본 글에서는 Grafana 기준으로 설명합니다.
분명, 와탭이나, 데이터독, 핀포인트 등에서도 같은 기능을 제공할 것이 예상됩니다.
개선하기 위해 가장 먼저 해야할일은 현재 서버의 상태 점검입니다.
일반적으로 사용 중인 APM 대시보드를 들어가게되면 아래와 같이 구성되어 있는점을 볼 수 있습니다.
특정일자, 특정시간에 튀는 경우도 종종있기도 하고, 평균치를 확인하면 더욱 좋을거라고 생각해서 오늘로부터 과거 7일치의 데이터를 확인하는 편입니다.

CPU 사용량, 메모리 사용량, (자바 어플리케이션 기준) JVM 힙 사이즈 등..
이 부분도 중요하지만, 시스템 성능상의 문제 여부를 빠르게 확인하기 위해서는 어떤 API에서의 Response 시간값이 몇초나 걸리는지를 확인하면 좋습니다.
“어떤 API에서의 Response 시간값” = Latency 라고 부릅니다.
개인적으로 웹 사이트 기준 1초가 넘어간다면 답답해서 새로고침을 하는편이라 제 기준 느린 API의 Latencys는 1000ms 초 이상입니다.
API를 특정했다면, 이제 TraceID 기반으로 어떤 동작에서 얼마나 시간이 걸렸는지를 확인합니다.
(Grafana의 경우 TraceId에 링크를 걸어 클릭시 이동 가능)
예시를 위해서 아무거나 잡아왔는데, 해당 API의 트레이스를 보면 특이점을 찾을 수 있습니다.
동일한 RDB에서 쓰고, 읽는데 소요된 시간이 쓰기보다 읽는게 더 느립니다. 쓰기 60ms, 읽기 316ms
5배 이상이 차이나는데, 이런 부분을 문제가 있다고 판단합니다.
보통 DB 읽기가 느리다면 인덱스 문제를 가장 먼저 떠올리게 되고 해당 API에서 검색 조건과 DB에서 인덱스가 설정되어 있는지 확인합니다.