摸索了半天,终于明白了一点:interactive_timeout和wait_timeout的关系如下:
1.interactive_timeout和wait_timeout的默认值都是2880(8小时)
2.当这两个参数同时出现在[mysqld]里时,会以interactive_timeout的值为准。也就是说不管wait_timeout的值是多少,用show variables like '%timeout%';查看时显示的两个值都是一样的,并且都是interactive_timeout的值。
但是connect_timeout
的效果就看不到了,它的默认值是10。
connect_timeout在获取连接阶段(authenticate)起作用,但如何才能看到效果呢?我在[mysqld]里设置了connect_timeout=5,然后重启了mysql,但依然可以连接进去啊,超过5秒依然还是可以输入sql语句。而且我在登录的时候./bin/mysql -uroot -p之后输入密码,又等了超过了5秒但还是顺利的登录进去了。这是怎么回事呢?到底如何才能看到connect_timeout的效果呢?
time telnet 192.168.224.43 3306接过如下:
Trying 192.168.224.43...
Connected to 192.168.224.43 (192.168.224.43).
Escape character is '^]'.
8 /5.1.49-log
[Z1(o{=42;tU-|PWF8'Connection closed by foreign host. //这一长串每次都不一样,不知是啥玩意?
real 0m5.004s
user 0m0.000s
sys 0m0.002s
后来我把connect_timeout改为8,出的结果为:
real 0m8.005s
user 0m0.001s
sys 0m0.003s |