데이터베이스 최대 연결 개수를 고민하는 경우는 흔치 않은 일입니다.
프로젝트 진행하면서 여러 개의 웹 서버가 한개의 티베로 DB와 통신을 위해 연결한 세션의 개수가 문제가 되었습니다.
웹 서버는 스프링 기반으로 제작되었는데 커넥션 풀(DBCP)을 기본 8개로 설정되어 있습니다. 웹 서버가 한대라면 문제가 없겠지만 여러 대의 웹서버에서 디비의 세션 카운트는 최대 100개를 넘어버린 상황으로 아래와 같은 에러 메시지를 출력했습니다.
[15:59:24.635]JDBC-90603:Invalid operation: disconnected from the server. [14:21:23.078]JDBC-12003:Unable to open a session. |
해당 메시지를 마주한다면 원격으로 접속하여 정리 작업을 할 수 밖에 없습니다.
만약 티베로 스튜디오가 접속해 있다면 정리하면 쿼리문으로 간단하게 세션정리를 할 수도 있습니다.
티베로 스튜디오 접속된 상태에서 SESSION 정리하기
-- 세션 정보
SELECT * FROM V$SESSION;
-- IP 별로 접속 개수 확인.
SELECT ipaddr, count(1) FROM V$SESSION GROUP BY ipaddr;
-- 최대 세션 개수 확인.
SELECT * FROM _vt_parameter WHERE name='MAX_SESSION_COUNT';
-- 세션 끊기 (SID, SERIAL#)
ALTER SYSTEM KILL SESSION (79, 33588);
원격 접속으로 서비스 종료
-- 티베로 DB 서비스 종료 명령.
C:\> TBDOWN
-- 종료 에러가 난다면, 정리해주는 명령으로 종료하기.
C:\> TBDOWN CLEAN
데모 버전이라도 세션의 개수는 제한이 없습니다.
SESSION COUNT 증가하기
C:\TmaxData\tibero6\config 경로로 이동합니다.
tibero.tip 파일을 엽니다.
-- 최대 접속 개수 지정.
MAX_SESSION_COUNT = 100
-- 메모리 관련 옵션 (Chuck Memory)
TOTAL_SHM_SIZE=1G
MEMORY_TARGET=2G
MAX_SESSION_COUNT를 100 이상으로 설정했다면,
TOTAL_SHM_SIZE, MEMORY_TARGET 값도 증가가 필요합니다.
증가 처리하지 않고 티베로를 실행(tbboot)하면,
프로세스가 동작하지 않을 확률이 매우 높습니다.
-- 서비스 시작 명령.
C:\> TBBOOT
'IT 개발 노트 > DB_TIBERO' 카테고리의 다른 글
[TIBERO] 페이징 처리 (top, limit) (0) | 2024.12.09 |
---|---|
SEQUENCE 자동 증가 사용 (0) | 2024.11.26 |
티베로6 ODBC 설정 (0) | 2024.11.22 |
티베로 데모 버전 사용해보기 (1) | 2024.11.22 |