* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
|
Linux 64bit |
|
cubrid 11.3 |
|
tranlist 사용 |
|
java, php, odbc 등 입력 |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
신규 서비스가 오픈하여,
cubrid tranlist --sort-key=7 --reverse xx@localhost 이용해서 모니터링 중입니다.
그런데 특정 transaction id 가
active / SQL_ID : empty / query time 0.00 인데 tran time 이 계속 증가 합니다.
trantime 이 2000,3000 sec 씩 수행되다가 빠집니다.
원인을 찾을 수 있는 방법이 있는지 어떻게 확인을 해야하는지 문의 드립니다.
tranlist에서 Tran time이 길어지는 이유는 대부분 응용 프로그램에서 요청한 트랜잭션이 종료되지 않았기 때문입니다. 아래 내용을 참고해 원인을 확인해 보시기 바랍니다.
1. 대상 트랜잭션의 SQL 로그 확인
Tran time 정보에서 종료되지 않는 트랜잭션(Program nam) 찾아 $CUBRID/log/broker/sql_log 경로에서 관련된 SQL 로그를 확인해 보세요.
SQL 로그에서 아래 항목들이 기록되지 않은 경우, 해당 트랜잭션은 종료되지 않고 계속 유지되고 있을 가능성이 큽니다:
- end_tran
- auto_commit
- 예제로그
:
25-06-09 17:26:38.404 (0) end_tran COMMIT
25-06-09 17:26:38.405 (0) end_tran 0 time 0.001
25-06-09 17:26:38.405 (0) *** elapsed time 0.001
:
25-06-09 17:26:38.418 (0) auto_commit (local)
25-06-09 17:26:38.418 (0) auto_commit 0
25-06-09 17:26:38.418 (0) *** elapsed time 0.013
2. 응용 프로그램(AP) 로직 점검
응용 프로그램에서 SQL 요청 처리 후 DB 연결 해제(disconnect) 가 정상적으로 수행되고 있는지 반드시 확인해야 합니다.
연결을 종료하지 않고 세션을 유지할 경우, 해당 세션의 트랜잭션도 함께 열린 상태로 유지되어 tran_time이 계속 증가하게 됩니다.
이와 같이 트랜잭션 종료 누락 또는 연결 해제 미처리는 tranlist에 장시간 유지되는 트랜잭션의 주요 원인이 될 수 있으므로 SQL 로그와 AP 로직을 모두 점검하여 문제를 파악하시기 바랍니다.