기본 콘텐츠로 건너뛰기

mysql의 wait_timeout의 설정

mysql에서 wait_timeout값을 설정 변경한 후 값이 변하지 않았다고 하는 질문들이 많이 있다.
[mysqld] 섹션에 wait_timeout의 설정을 추가한 후 mysql의 shell에서 조회하는데 wait_timeout값이 변경되지 않은 값이 보이기 때문인데 이것은 조회하는 방법상의 문제이다.

설정과 조회방법을 알아보자.

테스트 환경 CentOS release 5.4 (Final), mysql-4.1.22

1. wait_timeout 설정
[mysql@myServer ~]vi /etc/my.cnf
...

[mysqld]
...
...
wait_timeout=10000 #default value 28800

2. mysql 데몬 재시작
[mysql@myServer ~]service mysqld restart
or
[mysql@myServer ~]/etc/init.d/mysqld restart


3. 설정값 확인
[mysql@myServer ~]$ mysql -u root -p
...

mysql> show variables like '%timeout%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| connect_timeout | 5 |
| delayed_insert_timeout | 300 |
| innodb_lock_wait_timeout | 50 |
| interactive_timeout | 28800 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| sync_replication_timeout | 0 |
| wait_timeout | 28800 |
+--------------------------+-------+
9 rows in set (0.01 sec)


mysql> show global variables like '%timeout%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| connect_timeout | 5 |
| delayed_insert_timeout | 300 |
| innodb_lock_wait_timeout | 50 |
| interactive_timeout | 28800 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| sync_replication_timeout | 0 |
| wait_timeout | 10000 |
+--------------------------+-------+
9 rows in set (0.00 sec)

mysql> select @@global.wait_timeout, @@session.wait_timeout;
+-----------------------+------------------------+
| @@global.wait_timeout | @@session.wait_timeout |
+-----------------------+------------------------+
| 28800 | 28800 |
+-----------------------+------------------------+
1 row in set (0.04 sec)

보통 mysql shell에서 첫번째 방법으로 variable값을 확인한다. 그러나 wait_timeout값을 변경했음에도 불구하고 값은 28000으로 나온다.

이는 mysql shell상에서 wait_timout값은 interactive_timeout값을 참고하기 때문이다.
그러므로 show global variables like '%timeout%'로 값을 확인하자.

[참고] http://bugs.mysql.com/bug.php?id=33123
[참고] http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_interactive_timeout

댓글