DB 연결 지연과 커넥션 풀
이 문서는 대표적인 애플리케이션 성능 장애 유형 중 하나인 DB 연결 지연(DBC 지연)과 Connection Pool의 상관관계를 모니터링 관점에서 정리합니다.
먼저 대시보드의 히트맵 위젯을 통해 1차적으로 장애 상황을 인지했다고 가정한 뒤, 분석 메뉴 하위의 히트맵 메뉴로 이동해 시간을 특정하는 방식으로 장애 상황 전후를 살펴봅니다. 이를 토대로 트레이스 정보 창과 메트릭스 차트 등을 통해 장애 원인을 추론하는 과정을 다룹니다.
미리 알아보기
애플리케이션 대시보드 → 히트맵 트랜잭션 → 트레이스 정보 → 메트릭스 차트
-
문제 현상을 인지했다면 과거 기록을 조회해 장애 현상 시점 전후를 조회합니다. 히트맵 트랜잭션 차트에서 트랜잭션 과부하 패턴 확인 후 TX 트레이스 목록을 통해 트랜잭션 지연 원인을 DB 연결 문제로 예상할 수 있습니다.
-
구간별 조회 후 트레이스 분석을 통해 상세 수행 이력을 스텝별로 살펴봅니다. 경과 시간을 가장 많이 소요하고 있는 것이 DBC 스텝임을 확인할 수 있습니다.
-
메트릭스 차트를 통해 다양한 지표를 함께 살펴봅니다. DB Pool 개수 차트와 DB Active 개수 차트를 비교해 DB Connection Pool의 부족이 원인임을 특정할 수 있습니다.
-
사용자 운영 환경에 따라 Connection Pool의 크기를 점차적으로 조절하거나 누수를 막기 위해 최적화 설정을 하는 방법을 활용할 수 있습니다.
히트맵 이상 패턴 감지

장애 현상을 인지하고 일차적인 분석을 통해 장애 원인을 추적하는 과정은 신속함이 핵심입니다. 와탭은 직관적인 뷰를 제공할 뿐만 아니라 근본 원인 추적을 위한 추가 정보를 확보할 수 있도록 과거 기록 조회 기능을 제공합니다. 애플리케이션 대시보드의 히트맵 위젯에서 예시처럼 급격한 이상 징후를 감지했다면 다음 순서는 무엇일까요?
히트맵 위젯에서 문제 구간을 드래그해 트랜잭션 트레이스 분석을 빠르게 진행할 수도 있고, 또는 분석 메뉴 하위의 히트맵으로 이동해 시간 범위를 보다 넓게 특정하는 방식으로 전후 상황을 함께 살펴볼 수도 있습니다.

후자의 동선으로 진행해 보겠습니다. 대시보드 히트맵 위젯은 최근 10분간 종료된 트랜잭션 응답 시간 분포도입니다. 즉 시간 범위를 특정해 최근 10분 이상의 과거 내역을 확인하려면 분석 메뉴 하위의 히트맵 메뉴로 이동해야 합니다. 위젯 우측 상단의 화살표 아이콘을 클릭해 예시와 같이 이동할 수 있습니다.
히트맵 트랜잭션 차트 상단의 시간 선택자를 통해 원하는 시간 범위를 지정해 과거 기록을 조회할 수 있습니다. 이상 패턴을 확정하기 위해 문제 구간 전후로 넓게 살펴보니 응답이 지연되고 있는 트랜잭션이 밀집한 과부하 패턴을 확인할 수 있었습니다.

이와 같은 갑작스러운 응답 시간 증가와 트랜잭션 과부하의 원인을 알아보기 위해 히트맵 트랜잭션 차트에서 문제 영역을 구간별로 드래그해 트랜잭션 트레이스 목록(TX 트레이스 목록)을 조회해 보겠습니다.

TX 트레이스 목록을 통해 다수의 트랜잭션에서 경과 시간 대비 DB 접속 시간이 차지하는 비율이 큰 것을 확인할 수 있습니다. 예시로 /api/system/test URL의 경우 총 경과 시간 25,057ms 중 DB 연결에만 24,931ms가 소요되었습니다. 즉 일차적으로 DB 연결에 문제가 있다는 것을 추측할 수 있습니다. 다음으로 해당 트랜잭션을 선택해 트레이스 정보 창에서 상세 정보를 살펴보겠습니다.
-
히트맵의 가로축은 트랜잭션 종료시간을, 세로축은 응답 시간을 의미합니다. 히트맵에서
화살표 아이콘을 클릭해 세로축 응답 시간 지연 구간을 80초까지 조회할 수 있습니다.
-
과부하 패턴 외에 히트맵 패턴 분석에 대한 자세한 내용은 다음 문서를 참조하세요.