트랜잭션 프로파일
트랜잭션이 느리거나 오류가 있다면 그 원인을 추적하기 위해서 수행 이력을 스텝별로 추적할 필요가 있는데 이를 트랜잭션 프로파일링이라고 합니다.
와탭이 수집하는 스텝의 종류에는 크게 SQL 스텝, HTTP CALL 스텝, 메시지 스텝, SOCKET 오픈 스텝, DB 연결 스텝, 메소드 스텝 등이 있습니다.
- DB 연결 스텝
-
수집 방식: START-END
RDB에 대한 연결에 대한 성능을 포함합니다. 스텝 정보에는 이름, 응답시간, 에러를 포함합니다. - SQL 스텝
-
수집 방식: START-END
JDBC SQL에 대한 성능을 포함합니다. 스텝 정보에는 연결 정보, SQL문, 에러가 포함됩니다. - HTTP Call 스텝
-
수집 방식: START-END
외부 http 서비스 호출에 대한 성능을 포함합니다. 스텝 정보에는 url, host, port, 응답시간, 에러가 포함됩니다. - Message 스텝
-
수집 방식: ADD
메시지 스텝을 프로파일을 수집하는 과정에서 비정형적인 모든 구간에 대한 이력을 수집할 때 사용됩니다. file 오픈 혹은 사용자도 임의의 위치를 지정하는 데 사용할 수 있습니다. - SOCKET 스텝
-
수집 방식: ADD
Socket 오픈을 표현하는 스텝입니다. - METHOD 스텝
-
수집 방식: START-END
메소드 응답 시간을 추적합니다. - ACTIVE STATCK 스텝
-
수집 방식: ADD
액티브 스텝에 대한 정보를 포함합니다. 별도 쓰레드가 생성하여 프로파일에 추가하는 방식으로 수집합니다.
상세 분석
와탭은 트랜잭션의 성능을 분석하기 위해 이름과 클라이언트 정보 등의 속성, 트랜잭션의 처리 성능 그리고 각 구간별 상세 수행이력을 수집하고 보여줍니다.

이 중 상단에 위치한 트랜잭션 속성과 성능 정보에 대한 설명은 다음과 같습니다.

프로젝트 코드 |
와탭 모니터링 프로젝트 코드 |
Oid |
애플리케이션(에이전트) 오브젝트 아이디 |
Oname |
애플리케이션 오브젝트 이름 |
Type |
애플리케이션 타입 - Java, Node.Js, PHP, Python 등 |
Tid |
트랜잭션 아이디 |
UrlHash |
URL의 hash 값 |
UserToken |
사용자 토큰 - 이 값은 와탭이 부여한 고유한 사용자 아이디 |
Method |
HTTP 메소드 - GET, POST, PUT, HEAD 등 |
StartTime |
트랜잭션 시작 시간 |
EndTime |
트랜잭션 종료 시간 |
Elapsed |
트랜잭션 수행 시간 |
CpuTime |
CPU 점유 시간 |
MemAlloc |
트랜잭션이 사용한 메모리 량 |
Ipaddr |
클라이언트 IP |
Country |
클라이언트 국가 정보 |
City |
클라이언트 도시 정보 |
SqlCount |
SQL 수행 건수 |
SqlTime |
SQL 수행 시간 |
FetchCount |
SQL에서 데이터를 조회한 레코드 건수 |
FetchTime |
레코드를 조회하는데 걸린 시간(중첩이 발생하거나, 타 로직이 포함될 수도 있음) |
HttpcCount |
외부 Http Call 건수 |
HttpcTime |
외부 Http Call 시간 |
ClientOs |
클라이언트 OS |
ClientOsPro |
클라이언트 OS 회사 |
ClientType |
클라이언트 타입 (예 브라우저) |
ClientName |
클라이언트 브라우저 이름 |
UserAgent |
웹 클라이언트 정보, 이것을 파싱하여 ClientOs, ClientOsPro 등의 정보를 추출함 |
MTID |
멀티 서버 트랜잭션 아이디 |
Depth |
멀티 서버 트랜잭션이 몇 번째 티어인지 표시 |
Caller TID |
나를 호출한 트랜잭션의 Tid |
1. [Show Stats]를 클릭하면 해당 URL의 통계 데이터를 조회할 수 있습니다 2. [MTID]를 클릭하면 연관 트랜잭션[1]을 추가 조회 분석할 수 있습니다. 3. 에이전트 애플리케이션 타입이나 설정에 따라 표시되지 않는 항목이 있을 수 있습니다. 에이전트 매뉴얼을 참고 바랍니다. |
프로파일 다이어그램은 트랜잭션 수행 상세 이력입니다. 수행 상세 이력을 보여주기 위해 나타나는 각 칼럼 정보는 다음과 같습니다.

번호 |
스텝의 발생 순서 |
누적시간 |
해당 스텝까지의 누적 수행 시간 |
스텝 시간 |
해당 스텝에서의 응답시간 |
CPU Time |
해당 스텝까지 누적 CPU 사용 시간 |
메모리 |
해당 스텝까지 누적 메모리 사용량 |
단계 |
해당 스텝의 세부 수행 내역 |
이 중 `단계`는 다음과 같이 구분됩니다.
HTTP-HEADERS |
수집된 HTTP Header 정보를 보여줍니다. |
HTTP-PARAMETERS |
수집된 HTTP Parameter 정보를 보여줍니다. |
DB연결 |
DB 연결 URL과 연결 시간을 보여줍니다. |
SQL |
JDBC SQL에 대한 SQL문, 응답시간 에러를 보여줍니다. |
HTTP Call |
외부 http 서비스 URL과 응답시간, 에러를 보여줍니다. |
Message |
메시지 스텝을 비정형적 모든 구간에 대한 이력을 표시합니다. |
SOCKET |
Socket 오픈을 표현합니다. 응답시간은 추적하지 않습니다. |
METHOD |
에이전트에 추적이 설정된 메소드 이름과 응답시간을 보여줍니다. |
ACTIVE STATCK |
액티브 스택이 수집되었음을 의미합니다. 클릭해서 액티브 스택을 확인할 수 있습니다. |

트랜잭션 프로파일은 트리뷰 형태로도 볼 수 있습니다.

메소드 프로파일 설정을 많이 한 경우 리스트 뷰에서 상태 분석이 잘 안될 수 있습니다. 반대로 메소드 프로파일 설정을 거의 하지 않은 상태에서는 리스트 뷰가 분석하기에 유리합니다. |
트랜잭션 파라미터 조회
SQL 변수, HTTP 쿼리를 조회하기 위해서는 에이전트 설정을 추가합니다.
profile_sql_param_enabled=true #SQL 파라미터 조회 옵션 (1) profile_http_parameter_enabled=true #HTTP 파라미터 조회 옵션 (2)
1 | 옵션이 적용되면 SQL 파라메타를 암호화하여 수집합니다. |
2 | 옵션이 적용되면 HTTP 쿼리 파라메타를 암호화하여 수집합니다. |
설정 적용 후 프로파일 스텝 내 SQL 문을 클릭하면 파라미터를 조회할 수 있습니다.

파라미터 조회에 필요한 키는 에이전트 설치된 서버 $WHATAP_HOME/paramkey.txt 내에 6자리 문자열입니다. 필요시 다른 문자열로 변경 가능합니다.
whatap@vmwas01:/apps/whatap$ cat paramkey.txt A1B2C3
paramkey.txt 내 키는 SQL 변수 조회, HTTP 쿼리 조회, Thread 중지에 필요합니다. |