?show processlist 看了以下,发现我的那个业务的DB确实有很多sleep链接没有关闭。
以前也曾遇到过类似的问题,导致此问题的原因从网上查了,大体有几下几种原因:
造成睡眠连接过多的原因?
?
1. 使用了太多持久连接(个人觉得,在高并发系统中,不适合使用持久连接)
2. 程序中,没有及时关闭mysql连接
3. 数据库查询不够优化,过度耗时。
?
?
对于正在运行中的生产服务器,在不能停止服务情况下,修改此项怎么办?很简单,以root用户登录到mysql,执行:
set global wait_timeout=100
?
mysql的配置文件中,有一项:
?
wait_timeout, 即可设置睡眠连接超时秒数,如果某个连接超时,会被mysql自然终止,多好的办法!
?
如设置:
?
wait_timeout=100#即设置mysql连接睡眠时间为100秒,任何sleep连接睡眠时间若超过100秒,将会被mysql服务自然终止
?
?