액티브 서비스 상세 조회
액티브 서비스 상세 조회는 현재 실행 중인 트랜잭션의 내부 상태를 실시간으로 진단하는 핵심 분석 도구입니다. 스택 트레이스, SQL 실행 정보, 외부 호출(HTTP) 정보를 한눈에 확인하여 성능 병목의 원인을 빠르게 파악하십시오.
1. 페이지 개요
1.1 기능 설명
| 기능 | 설명 |
|---|---|
| 실시간 액티브 서비스 목록 | 현재 실행 중인 트랜잭션을 3가지 모드(트랜잭션/SQL/HTTP 호출)로 분류하여 표시 |
| 스택 트레이스 조회 | 선택한 스레드의 전체 스택 트레이스를 실시간으로 확인 |
| 스레드 상세 정보 | CPU 시간, 블록 횟수, 대기 시간, Lock 정보 등 스레드 내부 상태 확인 |
| 스레드 제어 | 병목 스레드에 인터럽트 신호 전송 또는 강제 정지 (권한 필요) |
| SQL 뷰어 연동 | SQL 모드에서 실행 중인 SQL 쿼리와 바인드 변수를 상세 확인 |
| 자동 새로고침 | 3초/5초/8초/10초 간격으로 데이터를 자동 갱신 |
1.2 접근 경로
접근 방법: 대시보드 > 액티브 서비스 바 차트 위젯 클릭
액티브 서비스 상세 조회는 별도 메뉴가 아닌, 대시보드의 액티브 서비스 바 차트 위젯을 클릭하여 팝업창으로 열립니다. 통합/시스템/관리자/운영 대시보드 모두에서 접근할 수 있습니다.
1.3 용어 안내
처음 사용하시는 분을 위해 주요 용어를 정리합니다.
| 용어 | 설명 |
|---|---|
| 액티브 서비스 | 현재 서버에서 실행 중인 트랜잭션(요청 처리)을 의미합니다 |
| 스택 트레이스 | 프로그램이 현재 어떤 코드를 실행하고 있는지 보여주는 호출 경로입니다 |
| 스레드 | 서버에서 하나의 요청을 처리하는 작업 단위입니다 |
| 경과 시간 (elapsed) | 요청이 시작된 후 현재까지 걸린 시간입니다. 길수록 느린 트랜잭션입니다 |
| TPS(초당 트랜잭션 수) | 서버가 1초에 처리하는 트랜잭션 수입니다 |
2. 화면 구성
2.1 주요 영역
| 영역 | 설명 |
|---|---|
| 왼쪽 패널 | 액티브 서비스 데이터 그리드 (3탭 모드), 새로고침 컨트롤 |
| 오른쪽 패널 | 스택 트레이스 상세, 스레드 정보, 제어 버튼 |
2.2 UI 구성도
2.3 전체 화면

3. 왼쪽 패널 — 액티브 서비스 목록
3.0 객체(서버) 선택기
왼쪽 패널 상단에 **객체(서버) 선택기(ServiceSelector)**가 표시됩니다.
| 기능 | 설명 |
|---|---|
| 서버 목록 | 모니터링 중인 서버 목록을 선택 메뉴로 표시 |
| 서버별 필터링 | 특정 서버를 선택하면 해당 서버의 액티브 서비스만 표시 |
| 전체 보기 | "전체" 선택 시 모든 서버의 액티브 서비스를 통합 표시 |
서버를 직접 선택하면 특정 서버에서 발생한 병목만 집중적으로 확인할 수 있습니다.
3.1 데이터 그리드 컬럼
왼쪽 패널의 데이터 그리드는 현재 실행 중인 트랜잭션 목록을 표시합니다.
| 컬럼 | 설명 | 비고 |
|---|---|---|
| 객체명 | 모니터링 대상 서버/인스턴스 이름 | 별칭이 있으면 별칭 표시 |
| 클라이언트 IP | 요청을 보낸 클라이언트의 IP 주소 | 없으면 - 표시 |
| 스레드 이름 | 요청을 처리 중인 스레드의 이름 | - |
| 스레드 CPU 시간 | 스레드가 소비한 누적 CPU 시간 (ms) | - |
| 스레드 상태 | 스레드의 현재 실행 상태 | RUNNABLE, WAITING 등 |
| URL | 처리 중인 요청 경로 | 모드 아이콘 함께 표시 |
| 경과 시간 | 요청 시작 후 경과 시간 (ms) | 색상 코딩 적용 |
| 모드 | 액티브 서비스 분류 | 트랜잭션/SQL/HTTP 호출 |
| 상세 내용 | SQL 쿼리 텍스트 또는 호출 정보 | SQL/HTTP 호출 모드 시 표시 |
3.2 경과 시간 색상 코딩
경과 시간에 따라 색상이 자동으로 변경되어 병목 트랜잭션을 직관적으로 식별할 수 있습니다.
| 색상 | 조건 | 의미 |
|---|---|---|
| 🟢 초록색 | 3초 이하 | 정상 처리 중 |
| 🟠 주황색 | 3초 ~ 8초 | 주의 필요 — 느린 트랜잭션 |
| 🔴 빨간색 | 8초 초과 | 병목 의심 — 즉시 확인 권장 |
빨간색으로 표시된 행을 먼저 클릭하여 스택 트레이스를 확인하십시오. 어떤 코드에서 오래 걸리는지 바로 파악할 수 있습니다.
3.3 행 선택
- 선택 방법: 원하는 행을 클릭합니다.
- 선택 결과: 오른쪽 패널에 해당 스레드의 상세 정보와 스택 트레이스가 표시됩니다.
- 선택 해제: 다른 행을 클릭하면 이전 선택이 해제됩니다.
- 한 번에 1개만 선택 가능합니다.
4. 오른쪽 패널 — 스택 트레이스 상세
4.1 패널 상태
오른쪽 패널은 상황에 따라 다른 화면을 표시합니다.
| 상태 | 표시 화면 | 설명 |
|---|---|---|
| 행 선택 전 | 안내 메시지 | "확인할 액티브 서비스를 선택해주세요." |
| 데이터 로딩 중 | 로딩 표시 | 스택 트레이스를 가져오는 중 |
| 정상 표시 | 스레드 정보 + 스택 트레이스 | 선택한 스레드의 전체 정보 |
| 조회 결과 없음 | 안내 메시지 | "확인 가능한 스택 트레이스가 없습니다." |
| 자동 새로고침 중 | 안내 메시지 | "액티브 서비스를 {N}초 마다 새로고침을 하고 있습니다." |
| 새로고침 정지 | 안내 메시지 | "새로고침을 정지 하였습니다." |
| 서버 다운 | 경고 메시지 | "객체가 다운되었습니다." |
4.2 스레드 정보
행을 선택하면 상단에 스레드의 상세 정보가 키-값 형태로 표시됩니다.
| 항목 | 설명 | 단위 |
|---|---|---|
| 객체명 | 모니터링 대상 서버 이름 | - |
| 수행 시간 | 요청 시작 후 경과 시간 | ms/s/min 자동 변환 |
| URL | 처리 중인 요청 경로 | - |
| 스레드 ID | 스레드 고유 식별자 | - |
| 스레드 이름 | 스레드 표시 이름 | - |
| 스레드 상태 | 실행 상태 (RUNNABLE, WAITING, BLOCKED 등) | - |
| 스레드 CPU 시간 | 스레드가 소비한 총 CPU 시간 | ms |
| 스레드 사용자 시간 | 스레드가 사용자 모드에서 소비한 CPU 시간 | ms |
| 블록 개수 | 스레드가 다른 스레드에 의해 차단된 횟수 | 회 |
| 블록 시간 | 차단된 누적 시간 | ms |
| 대기 개수 | 스레드가 대기 상태에 진입한 횟수 | 회 |
| 대기 시간 | 대기 상태 누적 시간 | ms |
| Lock 소유주 ID | 현재 Lock을 점유 중인 스레드 ID | 선택적 표시 |
| Lock 이름 | Lock 객체 이름 | 선택적 표시 |
| Lock 소유주 이름 | Lock을 점유 중인 스레드 이름 | 선택적 표시 |
블록 개수와 블록 시간이 높으면 데드락(Deadlock) 또는 Lock 경합이 의심됩니다. Lock 정보를 함께 확인하여 어떤 스레드가 Lock을 점유하고 있는지 파악하십시오.
4.3 스택 트레이스
스레드 정보 아래에 전체 스택 트레이스가 코드 형태로 표시됩니다.
- 표시 형식: 메서드 호출 경로를 위에서 아래로 나열
- 복사 기능: 스택 트레이스 영역 우측 상단의 복사 버튼을 클릭하면 전체 내용이 클립보드에 복사됩니다
- 복사 완료 알림: "클립보드에 복사되었습니다." 메시지가 표시됩니다
스택 트레이스를 복사하여 개발팀에 전달하면, 정확히 어떤 코드 라인에서 병목이 발생하는지 즉시 파악할 수 있습니다.
5. 3가지 모드: 트랜잭션 / SQL / HTTP 호출
왼쪽 패널 상단의 3개 탭으로 모드를 전환할 수 있습니다. 각 모드는 실행 중인 트랜잭션을 분류 기준에 따라 필터링합니다.
5.1 모드 비교
| 모드 | 탭명 | 표시 대상 | 주요 확인 사항 |
|---|---|---|---|
| 트랜잭션 | 트랜잭션 | 일반 애플리케이션 코드 실행 중인 트랜잭션 | 스택 트레이스, 실행 경로 |
| SQL | SQL | 데이터베이스 쿼리 실행 중인 트랜잭션 | SQL 쿼리 텍스트, 바인드 변수 |
| HTTP 호출 | HTTP 호출 | 외부 API/서비스 호출 중인 트랜잭션 | 호출 대상 URL, 응답 대기 시간 |
5.2 SQL 모드 상세
SQL 모드에서는 추가로 다음 기능을 사용할 수 있습니다.
| 기능 | 설명 | 필요 권한 |
|---|---|---|
| SQL 쿼리 표시 | 상세 내용 컬럼에 실행 중인 SQL 쿼리 표시 | 없음 |
| SQL 뷰어 | "SQL 뷰어로 보기" 버튼으로 전체 쿼리 상세 확인 | funcKey 5 (SQL 조회 권한) |
| 바인드 변수 | SQL에 전달된 파라미터 값 확인 | funcKey 5 |
SQL 모드에서 경과 시간이 긴 쿼리를 찾아 SQL 뷰어로 전체 쿼리와 바인드 변수를 확인한 후, DBA에게 전달하여 실행 계획 분석을 요청하십시오.
5.3 HTTP 호출 모드 상세
외부 서비스를 호출하여 응답을 대기 중인 트랜잭션을 확인합니다. 상세 내용 컬럼에 호출 대상 정보가 표시됩니다.
5.4 스플릿 레이아웃 크기 조절
왼쪽 패널과 오른쪽 패널 사이의 분리선을 드래그하여 패널 너비를 자유롭게 조절할 수 있습니다.
| 조작 | 방법 | 결과 |
|---|---|---|
| 왼쪽 패널 확장 | 분리선을 오른쪽으로 드래그 | 서비스 목록 더 많이 표시 |
| 오른쪽 패널 확장 | 분리선을 왼쪽으로 드래그 | 스택 트레이스 더 넓게 표시 |
오른쪽 패널을 넓혀서 긴 스택 트레이스를 더 편하게 읽을 수 있습니다.
5.5 포스트잇 탭 (세로 탭 메뉴)
팝업창 하단에 **세로 탭 메뉴(VerticalTabMenus)**가 표시됩니다. 포스트잇 형태의 탭으로 추가 정보를 확인할 수 있습니다.
| 탭 | 설명 |
|---|---|
| 메모 | 현재 선택한 서비스에 대한 운영 메모 작성 및 조회 |
| 기타 정보 | 선택한 트랜잭션의 추가 메타데이터 |
5.6 쓰레드 종료 상태 분기
스레드 이름에 End가 포함되어 있는지에 따라 오른쪽 패널의 제어 UI가 달라집니다.
| 조건 | 표시 UI | 설명 |
|---|---|---|
스레드 이름에 End 포함 | 추적(Trace) UI | 완료된 트랜잭션의 전체 실행 경로를 추적하는 모드 |
스레드 이름에 End 미포함 | 인터럽트/정지 버튼 | 실행 중인 스레드를 제어하는 일반 모드 |
6. 스레드 제어 (인터럽트 / 정지)
오른쪽 패널에서 실행 중인 스레드에 인터럽트 신호 전송 또는 강제 정지를 할 수 있습니다.
6.1 제어 버튼
| 버튼 | 동작 | 설명 | 필요 권한 |
|---|---|---|---|
| 인터럽트 | 스레드에 인터럽트 신호 전송 | 스레드가 안전하게 중단되도록 시도합니다. 스레드가 응답하지 않을 수 있습니다. | funcKey 4 |
| 정지 | 스레드 강제 정지 | 스레드를 강제로 종료합니다. 데이터 정합성에 영향을 줄 수 있습니다. | funcKey 4 |
- 인터럽트: 스레드에 중단 요청을 보내는 것이며, 스레드가 반드시 즉시 중단되는 것은 아닙니다.
- 정지: 스레드를 강제 종료하므로 트랜잭션이 비정상 종료될 수 있습니다. 데이터 손실이나 정합성 문제가 발생할 수 있으므로 최후의 수단으로만 사용하십시오.
6.2 사용 절차
- 왼쪽 패널에서 제어할 스레드를 선택합니다.
- 오른쪽 패널의 스레드 이름 옆에 인터럽트/정지 버튼이 표시됩니다.
- 버튼을 클릭하면 확인 팝업창이 표시됩니다.
- 인터럽트: "해당 스레드를 인터럽트 하시겠습니까?"
- 정지: "해당 스레드를 정지 하시겠습니까?"
- "계속" 버튼을 클릭하면 제어 명령이 서버로 전송됩니다.
6.3 권한 없을 경우
funcKey 4 (ALLOW_ACTIVE_STACK) 권한이 없으면 인터럽트/정지 버튼이 비활성화 상태로 표시됩니다. 권한이 필요한 경우 시스템 관리자에게 역할 설정 변경을 요청하십시오.
7. 데이터 갱신
7.1 자동 새로고침
왼쪽 패널 하단의 새로고침 컨트롤로 자동 갱신을 설정합니다.
| 구성 요소 | 설명 |
|---|---|
| 간격 선택 | 3초 / 5초 / 8초 / 10초 중 선택 |
| 기본값 안내 | RefreshSelect 폼의 기본값은 3초이지만, ActiveDialog(팝업창) 초기화 시 기본값은 10초가 적용됩니다. 실제 사용 시 10초로 시작됩니다. |
| 재생/일시정지 버튼 (▶/⏸) | 자동 새로고침 시작/중지 |
| 수동 새로고침 버튼 (🔄) | 즉시 데이터 갱신 |
7.2 갱신 방식
| 방식 | 설명 |
|---|---|
| 자동 갱신 | 선택한 간격마다 서버에서 최신 데이터를 자동으로 가져옵니다 |
| 수동 갱신 | 새로고침 버튼(🔄)을 클릭하면 즉시 데이터를 갱신합니다 |
긴급 상황에서는 자동 새로고침 간격을 3초로 설정하여 실시간에 가까운 모니터링이 가능합니다. 일상적인 모니터링에서는 10초를 권장합니다.
8. 라이선스 및 권한
8.1 기능별 요구 사항
| 기능 | 라이선스 필요 | 권한 (funcKey) | 미보유 시 동작 |
|---|---|---|---|
| 액티브 서비스 목록 조회 | 불필요 | 불필요 | 항상 사용 가능 |
| 스택 트레이스 상세 조회 | 필요 | 불필요 | 오른쪽 패널에 라이선스 안내 표시 |
| SQL 뷰어 | 불필요 | funcKey 5 | 버튼 비활성화 |
| 인터럽트 / 정지 | 불필요 | funcKey 4 | 버튼 비활성화 |
8.2 라이선스 미보유 시
스택 트레이스 라이선스가 없으면 오른쪽 패널에 **라이선스 안내 오버레이(LicenseNotice)**가 표시되며 상세 정보를 볼 수 없습니다. 오버레이는 팝업창 전면에 표시되어 기능 사용을 차단합니다. 라이선스 활성화는 관리자에게 문의하십시오.
8.3 주요 인터랙션 요약
| 인터랙션 | 방법 | 결과 |
|---|---|---|
| 서버 필터링 | 객체 선택기에서 특정 서버 선택 | 해당 서버의 액티브 서비스만 표시 |
| 패널 크기 조절 | 좌우 패널 사이 분리선 드래그 | 패널 너비 자유 조절 |
| 스레드 종료 감지 | 스레드 이름에 End 포함 시 | 추적(Trace) UI로 자동 전환 |
| 라이선스 차단 | 라이선스 미보유 상태 | LicenseNotice 오버레이 표시 |
9. 고급 활용: 성능 병목 분석
9.1 시나리오 1: 느린 트랜잭션 원인 분석
아래 절차를 따라 응답이 느린 트랜잭션의 원인을 분석하십시오.
- 대시보드에서 액티브 서비스 바 차트의 빨간색(8초 초과) 바를 클릭합니다.
- 왼쪽 패널에서 경과 시간이 가장 긴 행(빨간색)을 선택합니다.
- 오른쪽 패널에서 스레드 상태를 확인합니다.
RUNNABLE: 코드가 실행 중 — 스택 트레이스에서 병목 메서드를 확인하십시오.WAITING/BLOCKED: 다른 스레드를 대기 중 — Lock 정보를 확인하십시오.
- 스택 트레이스를 복사하여 개발팀에 전달합니다.
9.2 시나리오 2: SQL 성능 최적화
- SQL 탭을 클릭하여 SQL 모드로 전환합니다.
- 경과 시간으로 정렬하여 가장 오래 실행 중인 SQL을 찾습니다.
- 해당 행을 선택한 후 **"SQL 뷰어로 보기"**를 클릭합니다.
- 전체 쿼리와 바인드 변수를 확인하여 DBA에게 전달합니다.
9.3 시나리오 3: 외부 호출 병목
- HTTP 호출 탭을 클릭하여 외부 호출 모드로 전환합니다.
- 경과 시간이 긴 행을 선택합니다.
- 상세 내용에서 호출 대상 URL/서버를 확인합니다.
- 네트워크 지연 또는 외부 서비스 장애 여부를 확인합니다.
9.4 시나리오 4: 데드락 의심 상황
- 스레드 정보에서 블록 개수와 블록 시간이 높은 스레드를 확인합니다.
- Lock 소유주 ID를 확인하여 어떤 스레드가 Lock을 점유하고 있는지 파악합니다.
- Lock 소유주 스레드도 함께 분석하여 순환 대기 여부를 확인합니다.
- 필요시 인터럽트로 교착 상태를 해소합니다.
10. 문제 해결
10.1 자주 발생하는 문제
| 증상 | 원인 | 해결 방법 |
|---|---|---|
| "확인할 액티브 서비스를 선택해주세요." 표시 | 행을 선택하지 않음 | 왼쪽 패널에서 행을 클릭하십시오 |
| 데이터가 비어 있음 | 현재 실행 중인 트랜잭션이 없음 | 자동 새로고침을 활성화하고 부하 발생 시 다시 확인하십시오 |
| 스택 트레이스가 표시되지 않음 | 라이선스 미보유 | 라이선스 페이지에서 활성화 상태를 확인하십시오 |
| SQL 뷰어 버튼이 비활성화됨 | SQL 조회 권한(funcKey 5) 미보유 | 역할 설정에서 SQL 조회 권한 확인 후 관리자에게 요청하십시오 |
| 인터럽트/정지 버튼이 비활성화됨 | 스레드 제어 권한(funcKey 4) 미보유 | 역할 설정에서 스레드 제어 권한 확인 후 관리자에게 요청하십시오 |
| "객체가 다운되었습니다." 표시 | 모니터링 대상 서버가 중단됨 | 서버 상태를 확인하고 복구 후 다시 시도하십시오 |
| 바 차트 클릭 시 팝업이 열리지 않음 | 클릭한 객체가 다운 상태 | 실행 중인 다른 객체의 바를 클릭하십시오 |