* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
Linux 64bit | |
9.2.29.0001, 8.4.1.19001 | |
[도움말]-[버전정보] 확인 | |
java |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
java에서 cubrid-jdbc (version 9.2.19.0003) 을 이용해 서버를 운영 중입니다.
혹시 메모리 leak과 관련해 연관성이 없는지 문의드립니다.
환경은 아래와 같습니다.
cubrid-jdbc: 9.2.19.0003
cubrid: 9.2.29.0001, 8.4.1.19001
JDK 1.8.0_101
TOMCAT 7.0.90
APACHE 2.2.31
두개의 큐브리드 서버에 접근하고 있습니다.
메모리 leak 이 있는 것같아 확인해보니 cubrid.jdbc.jci.UStatement가 무한이 생성되어 있어 문의 드립니다.
프로젝트의 validationQuery는 SELECT 0 FROM DB_ROOT로 되어있어 attribute.jsp 파일에 찍혀는 state 문과는 다르며
testOnBoroow, testOnReturn, testWhileIdle 모두 false로 설정 되어있습니다.
SELECT 1 FROM DB_ROOT와 같은 validationQuery가 수행되어, 혹시 driver에서 수행하는지를 문의하신 것 같습니다.
CUBRID JDBC driver내부에서는 validationQuery와 같은 질의 (SELECT 1 FROM DB_ROOT)와 같은 질의를 임의로 수행하게 되어 있지 않습니다.
이 질의는 WAS 또는 응용프로그램에서 수행하는 것 같습니다, 설정이나 응용프로그램쪽을 확인해보시는 것이 좋을 것 같습니다.
validationQuery와 같은 유형의 질의가 수행되었는지는 cubrid server에서 $CUBRID/log/broker/sql_log에 가시면, 수행되었던 query를 log로 남아 있습니다. grep 명령어를 통해 찾아보시면 됩니다.
참고로 cubrid는 connection유지에 대해 자동으로 connection retry를 하기때문에 DB에 부담을 주는 validationQuery를 사용하지 않는 것을 권장합니다.