반응형
[장애 사례 모음] DB 커넥션 오류와 커넥션 풀 이슈 정리
애플리케이션에서 데이터베이스와 연동하는 과정에서 종종 발생하는
커넥션 관련 장애 사례들을 실무 기반으로 정리했습니다.
✅ 1. ORA-12516: listener could not find available handler
🔹 오류 메시지
ORA-12516, TNS:listener could not find available handler with matching protocol stack
🔹 원인
- DB listener는 연결을 수락했지만,
- 해당 연결을 처리할 수 있는 프로세스가 부족 (processes 파라미터 초과)
🔹 해결 방법
DB 측
ALTER SYSTEM SET processes=1000 SCOPE=SPFILE;
적용 후 DB 재시작 필요
WAS 측
- 커넥션 풀
maxActive
,maxTotal
조정 - 커넥션 누수 발생 여부 점검 (close 여부)
✅ 2. ORA-00020: maximum number of processes exceeded
🔹 증상
ORA-00020: maximum number of processes exceeded
- DB에 접속 자체가 불가
🔹 원인
processes
파라미터 초과- WAS, 배치, APM, DBA툴 등 전체 접속 수가 한도 초과
🔹 해결
SHOW PARAMETER processes;
- 필요 시
ALTER SYSTEM SET processes=...
증가
✅ 3. 커넥션 풀에서 커넥션 획득 실패
🔹 WAS 로그 예시 (Tomcat / HikariCP / JBoss)
Cannot get a connection, pool exhausted
🔹 원인
- 커넥션 풀 max 값보다 많은 요청 발생
- 커넥션이 반환되지 않음 (Connection Leak)
🔹 해결
- 커넥션 반환 (
conn.close()
) 확인 validationQuery
,testOnBorrow
로 유효성 점검- 불필요한 long query 최소화
✅ 4. 세션 또는 커넥션 타임아웃 문제
🔹 증상
- 일정 시간 뒤 접속이 끊기거나 오류 발생
- DB 연결이 끊어졌는데도 WAS는 살아있다고 판단
🔹 해결
Tomcat 설정 예
testOnBorrow="true"
validationQuery="SELECT 1 FROM DUAL"
timeBetweenEvictionRunsMillis="30000"
minEvictableIdleTimeMillis="60000"
- 일정 주기로 커넥션 유효성 검사
- 유효하지 않은 커넥션은 제거
✅ 5. DB 리스너 설정 누락
🔹 증상
- DB는 기동되었지만 외부에서 접속 불가
- ORA-12541: TNS no listener
🔹 해결
listener.ora
,tnsnames.ora
설정 확인- listener 프로세스 실행 상태 확인:
lsnrctl status
✅ 마무리
DB 커넥션 장애는 대부분 다음 3가지 요소에서 발생합니다:
- DB 리소스 한계 (processes, sessions)
- WAS 커넥션 풀 설정 오류 (maxActive, timeout 등)
- 코드 내 커넥션 반환 누락 또는 연결 유효성 문제
이런 장애는 정기 점검 + 지표 기반 튜닝을 통해 예방하는 것이 최선입니다.
반응형
'Application Servers & Java' 카테고리의 다른 글
[장애 사례] javax.net.ssl.SSLHandshakeException: PKIX path building failed (0) | 2025.05.15 |
---|---|
[실무 정리] 커넥션 풀(Connection Pool) 튜닝 가이드 (0) | 2025.05.15 |
[장애 사례] JBoss 세션 저장 시 NotSerializableException 발생 원인과 해결 (1) | 2025.05.15 |
[오류 해결] Invalid URL encoding 에러 원인과 해결 방법 (Spring + Tomcat 환경) (0) | 2025.05.14 |
[오류 해결] Unable to get managed connection for java:/jdbc/xxx 에러 원인과 해결 방법 (0) | 2025.05.14 |