解决问题
Lost connection to MySQL server at ‘reading authorization packet’, system error: 0通过修改 connect_timeout 的值来解决
http://hi.baidu.com/279713119/blog/item/d7cdd7533ba9c82e42a75b0f.html参考了一篇:『Fixing Poor MySQL Default Configuration Values』,里面提到了四个 MySQL 预设值相当没有意义,所以 Jeremy Zawodny 提出了修改,也解释了为什麼这四个会降低 MySQL 的效能。
1. max_connect_errors:
当使用者连接 MySQL 出现错误,伺服器就会根据 connect_timeout 所设定时间之後,而放弃等待,放弃之後会有 counter 来纪录连接失败的次数,当达到 max_connect_errors 设定值,伺服器就会 locked out client 端,这会衍生一个问题,那就是可以恶搞同一台网站,把 MySQL 搞烂,造成封锁,不过解决方法就是把 max_connect_errors 设定成 (max_connect_errors=1844674407370954751)2. connect_timeout:
这跟上面 max_connect_errors 是有相当大的关系,MySQL 预设 connect_timeout 是五秒,可是在网路繁忙的时候,也许需要花费比较多的时间来做连接, 但是预设值是五秒的话,这样会一直 time out,造成 counter 持续增加,届时会超过 max_connect_errors 设定值,所以必须把 connect_timeout 设定提高到 15 or 20,这样就可以了 (connect_timeout = 20)3. skip-name-resolve:
在每次的 MySQL 连线,伺服器端会侦测 Client 的 DNS 反解,这步骤真的有点多馀综合上面结论,请加入 my.cnf 一些设定
max_connections = 6000
wait_timeout = 5
max_connect_errors = 1844674407370954751
connect_timeout = 20
skip-name-resolve
slave_net_timeout = 30