티스토리 뷰
Communications link failure 에러는 디비 연결이 끊어진 경우에 쿼리를 실행 한 경우 나는 에러이다.
아래와 같이 SELECT 1이라는 vaildation query를 실행하는데 이미 db connection이 꾾어졌기 때문에 validation query를 실행하는데 에러가 발생한 것이다.
DB서버에서 연결을 끊어버리는 기준이 되는 시간과 관련 된 설정값은 wait_timeout이다.
아래의 명령어를 입력하면 wait_timeout이 몇초로 설정되어있는지 확인 가능하다.(기본값 : 28800초)
나는 개발서버에서 Communications link failure 가 자주 나타나서 (사실 validation query를 실행시키고 나서 컨넥션을 맺고 다음 쿼리를 실행시키기 때문에 무시해도된다) 값을 확인 해봤는데 600초...10분이었다.😥 장난하나..
에러를 분석해본 결과, 10분 이상 디비 컨넥션이 없었던 상황에서 디비 컨넥션이 되면 에러가 났다.
사실 이 설정값을 변경해주고 싶지만, (너무 낮은것 같다) 나에게 DB 접근권한이 없기 때문에 다른 방법을 사용해야한다.
(실제로 값을 변경하는걸 권장하지는 않는다고 한다. 그래도 너무 낮은거 같음..😕)
이를 해결하기 위해 일정주기마다 validation query를 실행시켜주면 된다.
아래와 같이 testWileIdle과 timeBetweenEvictionRunMillis 설정을 추가해주자!
<bean id="dataSource-mysql" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${DriverClassName}"/>
<property name="url" value="${Url}" />
<property name="username" value="${UserName}"/>
<property name="password" value="${Password}"/>
<property name="validationQuery" value="SELECT 1" />
<property name="testWhileIdle" value="true"/>
<property name="timeBetweenEvictionRunsMillis" value="540000"/>
</bean>
이렇게 property를 추가해주면 540000milisecond(9분)마다 validationQuery가 실행되면서,
연결시간이 종료되기 전에 연결 시간이 초기화 되어 Communications link failure 는 발생하지 않는다.
아래 로그를 보면 14:22:11을 마지막으로 db와 연결했고 9분 후인 14:31:10에 validation query가 실행 된 것을 확인 할 수 있다,
'백엔드 > database' 카테고리의 다른 글
[mysql/mariaDb] 대소문자를 구분하지 않는다는 착각 | lower_case_table_names (0) | 2022.08.03 |
---|---|
[mysql] union all로 두 테이블의 데이터를 가지고 올 때 정렬(두 데이터의 시간이 같을 때) (0) | 2022.06.29 |
mybatis selectKey 사용하기 (0) | 2022.06.21 |
mysql에서 변수 사용하기 (0) | 2022.06.20 |
서브쿼리를 조인으로 변경하기(mysql, 스칼라 서브쿼리) (0) | 2022.06.20 |
- Total
- Today
- Yesterday
- centos
- 톰캣
- Linux
- 자바
- javascript
- react
- softeer
- 자바스크립트
- java
- 쿠버네티스
- springboot
- 현대
- 스프링
- mysql
- 현대코테
- 아파치카프카
- softeer java
- 현대오토에버
- java 코테
- 리액트
- 도커
- Spring
- 코딩테스트
- 전자정부프레임워크
- 자바코테
- 오토에버코테
- Kubernetes
- tomcat
- Docker
- 코테
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |