JENNIFER Auto Stacktrace 사용하기
Stacktrace는 트랜잭션 실행에 대한 코드레벨에 정보를 제공하기 때문에 개발자가 트랜잭션을 분석할 때 사용하는 가장 강력한 도구 중 하나입니다. Stacktrace는 일반적으로 프로그램에서 발생하는 예외 사항과 관련이 있지만, 애플리케이션의 트랜잭션을 이해하고 분석하거나 어떤 상황이 발생했을 때 병목 지점 위치를 찾아내는데 사용할 수 있습니다.
JENNIFER Auto Stacktrace 기능은 사용 가능한 프로파일 정보가 충분하지 않거나, 애플리케션 트랜잭션을 분석하고 디버깅하는 데 도움이 될 수 있는 편리한 기능입니다. 트랜잭션의 응답시간이 오래 걸리는 경우, JENNIFER는 트랜잭션이 종료될 때까지 일정 주기로 Stacktrace 스냅숏 데이터를 자동으로 수집합니다. 그런 다음 이러한 스냅숏을 JENNIFER X-View의 트랜잭션 상세 분석 기능을 통해 분석할 수 있습니다.
Auto Stacktrace 구성
기본적으로 JENNIFER는 트랜잭션의 응답시간이 8초 이상 걸릴 때 Stacktrace 수집을 시작합니다. 이 임계값은 관리 화면의 ‘Auto Stacktrace’ 메뉴 항목을 통해 필요에 맞게 구성하고 조정할 수 있습니다.
Auto Stacktrace 메뉴 항목에는 3가지 설정 기능이 있습니다. 이 기능을 사용하여 Auto Stacktrace를 구성할 수 있습니다. 이러한 설정에 대한 방법은 다음과 같습니다.
1- Critical Time 임계시간
- 임계 시간은 JENNIFER가 Stacktrace 수집을 자동으로 실행하길 원하는 응답시간의 임계값 입니다. 트랜잭션 실행이 이 임계값을 초과하면 JENNIFER는 트랜잭션이 완료될 때까지 수집 간격 값에 따라 주기적으로 Stacktrace를 수집합니다.
2- Collect Interval 수집주기
- Stacktrace collect interval 스텍트레이스 수집 주기
3- Collect Max Count 수집 최대개수
- 수집할 Stacktrace의 최대 수입니다.
예를 들어, 트랜잭션이 완료되는 데 10 초가 걸리면, JENNIFER는 위의 구성에 따라 2개의 Stacktrace를 수집합니다. 수집 최대 개수 설정은 트랜잭션이 완료될 때까지 오랜 시간이 걸리는 경우, 너무 많은 데이터가 쌓이는 것을 방지하기 위한 기능입니다.
Auto Stacktrace 사용하기
Auto Stacktrace의 이해를 위해 다음의 예시를 살펴보겠습니다. 어느 고객사의 호텔 시스템은 3개의 애플리케이션(3개의 에이전트)으로 구성되어 있습니다. 주요 애플리케이션은 사용자가 호텔 객실과 서비스를 탐색할 수 있는 호텔 시스템입니다. 두 번째 애플리케이션은 호텔 결제 서버이며, 마지막 애플리케이션은 신용 카드 유효성 확인을 위한 서비스입니다.
이런 일이 발생하면 JENNIFER는 Auto Stacktrace 기능을 통해 느린 트랜잭션에 대한 Stacktrace 정보를 자동으로 수집하여 유용하게 사용할 수 있습니다.
JENNIFER X-View의 느린 트랜잭션 분석을 통해 우리는 객실 예약 트랜잭션에 장애가 있음을 발견하였지만, 예약 시스템의 트랜잭션이 3대의 서버(결제 및 유효성 검사)와 연결되어 있으므로, 근본 원인에 대한 추가 정보가 필요합니다.
X-View를 확인하면 iCheck서버(신용 카드 유효성 검사)에서 장애가 발생한 것을 알 수 있으므로 우리는장애 발생 위치를 좁힐 수 있지만, 여전히 더 많은 정보가 필요합니다. 앞에서 설명한 것처럼 다이나믹 프로파일링 기능이 활성화되지 않았으므로 JENNIFER의 프로파일 정보는 애플리케이션 코드(메서드 구간으로 표시된 부분)에 장애가 있음을 보여줍니다.
그러나 이 트랜잭션이 8초 이상 오래 걸렸기 때문에 우리는 JENNIFER가 이미 두 개의 Stacktrace 스냅숏을 수집했음을 확인할 수 있었습니다. 이 Stacktrace를 분석한 결과 애플리케이션 실행 스레드가 Chec.alid 메서드에 막혀 있는 것을 발견하게 되었습니다.
JENNIFER Stacktrace 화면에는 두개의 탭이 있으며, 세부 정보 탭에는 JENNIFER/CIFS가 수집한 각 Stacktrace를 개별적으로 분석할 수 있습니다. 요약 탭은 각 개별 메서드 실행의 요약정보가 표시되며, 이 정보에는 클래스 이름 및 코드 라인, 메서드 실행 시간, 메서드 실행 횟수 등이 포함되어 있습니다.