More

AWS RDS 오라클 사용 중 Got minus one from a read call, connect lapse 10 ms

Got minus one from a read call, connect lapse 10 ms

에러메시지 : org.apache.naming.NamingContext.lookup Unexpected exception resolving reference java.sql.SQLRecoverableException: IO Error: Got minus one from a read call, connect lapse 10 ms., Authentication lapse 0 ms.

Got-minus-one-from-a-read-call

Got minus one from a read call, connect lapse 10 ms 에러 모습


처음 이 에러메시지를 확인했을 땐 톰캣 커넥션풀 초과로 인해 발생했다고 생각했는데 AWS의 cloudwatch DatabaseConnections을 살펴보니 그게 아니었단걸 깨닫고 일단 긴급조치 했습니다.

DatabaseConnections-확인

DatabaseConnections 이 엄청나게 차있다 긴급 조치 후 급격히 빠지는 모습


긴급 조치 후 select * from v$resource_limit; 쿼리를 통해 확인해보니 processes, sessions 값은 다시 정상으로 돌아왔고 제 경우는 사용한 커넥션을 반환해야 하는데 어딘가에 누수가 있어 계속 쌓이고 있다가 아침시간 로그인이 몰리면서 발생한 것 같습니다.

이 에러메시지의 주된 원인은 오라클에 설정되어 있는 processes, sessions 최대값 이상으로 접속이 몰릴 경우 생긴다고 합니다.

processes-sessions-확인

긴급 조치 후 CURRENT_UTILIZATION 값이 다시 내려온 모습, LIMIT_VALUE 에 근접한 값으로 변하면 조치해줘야 합니다.


processes, sessions 최대 값을 늘릴 수 도 있지만 이 설정을 늘리면 데이터베이스 연결에 메모리를 사용하기 때문에 이러한 파라미터 중 하나를 너무 높게 설정하면 메모리 부족 상태가 발생하여 DB 인스턴스가 파라미터 호환 장애(incompatible-parameters) 상태가 될 수 있습니다.