APM 에서 트랜잭션 분석 챠트 활용하기 : T-MAP
안녕하세요
솔루션 서비스팀 박찬석입니다.
이번 포스팅 주제는 “Trancaction Heatmap(T-Map)” 입니다.
T-Map이란?
Transaction Heatmap(T-Map)은 시간의 흐름에 따른 응답시간의 분포를 격자 형태로 표현하고, 해당 시간/응답시간 격자에 처리된 요청이 많으면 더 짙은 색상으로 표시하는 Heatmap으로 표현한 것입니다. 애플리케이션에 속한 모든 인스턴스들에 대해 모두 표시가 되며 HTTP Status 코드로 400, 500 오류가 발생하면 Cell에 빨간색으로 표시됩니다. APM사용자는 Pending Transaction같은 이슈 상황 발생시 T-Map을 활용하여 원인을 파악하는데 도움을 받을 수 있습니다.
T-Map의 보관주기와 Current / History / Range
T-Map의 보관주기
시스템 설정에서 트랜잭션 데이터의 보관주기를 설정할 수 있습니다. 디폴트 값은 30일입니다. 이렇게 설정될 경우 최대 30일까지의 T-Map데이터를 조회할 수 있습니다.
Current
Current는 말 그대로 현재의 트랜잭션 상황을 볼 수 있습니다. X축에 해당하는 현재 시간의 흐름에 따라 트랜잭션 데이터들이 수집되어 T-Map을 그리게 됩니다.
Hisotry
History를 선택할 경우 원하는 날짜를 선택하여 해당 날짜의 T-Map 상황을 조회할 수 있습니다.
Range
Range로 조회할 경우 원하는 시작 날짜와 시간부터 끝 날짜와 시간까지의 범위에 해당하는 T-Map 상황을 조회할 수 있습니다.
T-Map 상세
Transaction Heatmap(T-Map)에 마우스로 드래그하여 사각형을 그리면, 해당 영역에서 처리된 Request들에 대한 상세 트랜잭션을 메소드 단위로 분석할 수 있습니다. 상단에는 선택한 영역에서 실행된 Request들이 출력되며, 상단에서 Row를 클릭하면 하단에 트랜잭션에 대한 상세 정보를 출력합니다.
Request URL의 링크를 클릭하면, 사용자가 요청한 URL로 이동하여 실제 어떤 페이지 요청이었는지 확인할 수 있다. 그 외에 시작시간, 수행시간, Database와 관련된 실행시간의 합, CPU 소요 시간 등의 정보를 확인할 수 있습니다.
트랜잭션 상세 정보는 다음과 같은 형식으로 표시됩니다.다. 수행시간이 느리면 빨간색으로 표시됩니다.
해당 메소드에서만 실행하는 데 소요된 시간을 계산하여 Exclusive 시간을 계산하여 표시합니다. 메소드들을 실행 관계를Tree 형태로 표현하고 있습니다. 또, B-Gab(Before Gab), A-Gab(After Gab)을 표시하는데, 그 계산 방식은 아래와 같습니다.
위와 같이 SQL쿼리의 수행시간이 오래 걸리면(WAS Agent에서 설정), 해당 쿼리를 실행한 애플리케이션의 위치를 파악할 수 있도록 Stack Trace를 출력합니다.
HTTP Status Code 40x, 50x오류 정보를 모두 수집합니다. 500 오류 중에서 JSP 컴파일 오류와 같은 오류는 아래와 같이 오류 메시지를 수집하여 표시합니다.
장애에 따른 T-Map의 모양(패턴)
Full GC
빨간 상자 우측에 나와 있는 너무 많은 fetch건수를 보면 약 10만건에 가까운 fetch건수를 jvm heap에 담다보니 fullgc가 일어나 사용자 입장에서는 서비스가 멈춘 것 같이 느끼게 되는 상황입니다.
Full GC가 일어나면 위 T-Map 패턴처럼 서비스가 멈춰 텀이 생기게 됩니다.
Server Hang
위 상황은 스레드가 pending상태에 걸려있는 스레드덤프 화면입니다. 좌측 상단을 보면 250개의 스레드가 빨갛게 쌓여있는 것을 볼 수 있습니다. 이 경우는 pool의 타임아웃 설정이 되어있지 않아 서버 입장에서 무기한 대기하는 상황입니다.
T-Map에서 보면 전체 스레드가 팬딩이 되어 Y축에 해당하는 응답시간이 계속 늘어나게 되는 패턴을 확인할 수 있습니다.
Runtime Exception
빨간 상자에 있는 화면을 보면 102번째 라인에서 jsp구문 오류가 일어난 것을 확인할 수 있습니다.
이런 특정 jsp를 호출하게 되면 구문 오류가 검출되고 낮은 응답시간으로 500에러가 발생하게 됩니다.
Runtime Exception은 특정 jsp를 호출하는 URL이 요청을 받고 짧은 응답시간으로 에러를 뱉기 때문에 T-Map에서 보면 아래 빨간 점(에러들)이 쌓이는 패턴을 볼 수 있습니다.
공공 클라우드 : [전자신문][발표자료] 레드햇과 오픈마루가 함께하는 공공 클라우드 네이티브 도입 성공전략
/in APM, Cloud, Container, Kubernetes, Seminar/by 주하 원[전자신문 – allshowTV 웨비나][발표자료] 클라우드 네이티브 시대를 위한 업무 중심의 모니터링 ‘OPENMARU APM’
/in APM, Cloud, Container, Kubernetes, Seminar/by 주하 원[웨비나] 클라우드 네이티브 시대를 위한 업무 중심의 모니터링 ‘OPENMARU APM’ (7/17)
/in APM, Cloud, Container, Kubernetes, News, Seminar/by 주하 원