기록 > 기억
[Oracle] java.sql.SQLRecoverableException: IO Error: Connection reset by peer 본문
에러일지
[Oracle] java.sql.SQLRecoverableException: IO Error: Connection reset by peer
BY SON 2017. 11. 21. 12:56● 에러 발생
포트폴리오 메인화면 로딩 시 DB 데이터를 조회 하는데 이때 error 메시지 발생 (Connection reset by peer)
새로고침 하면 이후에는 정상적으로 조회됨
● 에러 발생 원인
DB는 커넥션을 맺은 후 장시간 사용하지 않으면 커넥션을 반환하는데 (connection time out)
반환된 커넥션을 사용하려고 하여 에러 발생 한거임
한마디로 DB에서 커넥션이 종료되었는데 WAS는 그것을 알아채지 못해서 발생
● 해결 방안
특정 시간마다 커넥션이 유효한 상태인지 확인 하도록 설정
① context-datasource.xml 수정
<bean id="dataSourceSpied" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="#{jdbc['jdbc.driver']}"/>
<property name="url" value="#{jdbc['jdbc.url']}"/>
<property name="username" value="#{jdbc['jdbc.username']}"/>
<property name="password" value="#{jdbc['jdbc.password']}"/>
<property name="validationQuery" value="SELECT 1 FROM DUAL"/>
<property name="testWhileIdle" value="true"/>
<property name="timeBetweenEvictionRunsMillis" value="7200000"/>
</bean>
validationQuery | Pool에서 커넥션 가져오고 반환할 때 유효한 커넥션인지 검사할때 사용되는 쿼리 |
testWhileIdle | Idle Object Evictor가 커넥션 유효성 검사해 유효하지 않은 커넥션 Pool에서 제거 |
timeBetweenEvictionRunsMillis | 설정된 시간마다 Idle Object를 제거하는 Evictor가 실행됨 |
※ evictor : 비정상 종료된 커넥션(Idle Object) 제거
2시간(7200000밀리초 = 120분)에 한번씩 "SELECT 1 FROM DUAL" 쿼리를 날려 커넥션 유지
'에러일지' 카테고리의 다른 글
[MySQL] Alias 안먹힐 때 (0) | 2021.10.12 |
---|---|
[MySQL] Public Key Retrieval is not allowed (0) | 2021.10.07 |
[JavaScript] var name = []; name의 자료형이 string? (0) | 2021.09.16 |
[File upload] 파일 업로드 경로 프로젝트 외부에 두기 (0) | 2017.11.08 |
[jQuery] 동적으로 추가한 요소 이벤트 먹통 (0) | 2017.06.30 |
Comments