Live Brilliant

wait_timeout 문제 본문

개발은 핵찜이야/리눅스

wait_timeout 문제

주인정 2012. 4. 13. 17:26

my.cnf의
[mysqld] section에
wait_timeout=300

으로 설정 추가하고 다시 띄운다.(기본값은 28800)

mysql로 접속하여
show variables like 'wait_timeout';
을 해본다.
어라? 28800이다.
왜 적용이 안되는 걸까..

show variables like '%timeout%';
을 해보면,
interactive_timeout이라는게 있는데,
이게 바로 커맨드라인 클라이언트인
mysql (보통 /usr/local/mysql/bin/mysql 또는 /usr/local/bin/mysql 등등)을 말하는 거다.

당연히 mysql 기본 클라이언트로 interactive mode접속하면
wait_timeout을 interactive_timeout값으로 바꿔주는거다.

왜냐구?
interactive mode로 접속했으니까 그렇지 ㅡ_ㅡ

show global variables like '%timeout%';
을 해본다.

wait_timeout=300
으로 설정이 잘 되어있다.

즉, interactive mode가 아닌 접속 쓰레드에 대해서 wait_timeout이 새로 설정한 값이 된다는거다.
당연히 mysql로 접속해서는 확인을 못한다.

본인이 작성하는 프로그램의 라이브러리를 이용하여 테스트 커넥션을 만들고
300초간 아무것도 하지 않은 후에 쿼리를 하나 날려보자
"SELECT 1" 과 같은..

에러가 난다.
2006, Mysql server has gone away.
설정한 wait_timeout이 먹었다.

 

'개발은 핵찜이야 > 리눅스' 카테고리의 다른 글

서버 접속자 파악  (0) 2012.04.13
crontab 명령어  (0) 2012.04.13
서버.. MySql 로그 남기려면..  (0) 2012.04.13
파일 용량 특정 위치 찾기 awk  (0) 2012.04.13
awk 명령어 사용방법  (0) 2012.04.13
Comments