Welcome 微信登录

首页 / 数据库 / MySQL / MySQL sleep连接过多的完美解决办法

睡眠连接过多,会对mysql服务器造成什么影响?严重消耗mysql服务器资源(主要是cpu, 内存),并可能导致mysql崩溃。造成睡眠连接过多的原因?1. 使用了太多持久连接(个人觉得,在高并发系统中,不适合使用持久连接)2. 程序中,没有及时关闭mysql连接3. 数据库查询不够优化,过度耗时。那么,如果要从根本上解决sleep连接过多,就得从以上三点反复检查,但是见效并不快。网上有人分享,使用shell脚本配合cron,定期杀死睡眠时间太久的连接,但是这种方法非常不可取,典型的以暴制暴,很可能导致数据崩溃,而且,还需要编写相应shell, 设置cron, 实施成本较繁琐,不推荐使用。那么更好的办法应该是让mysql自己决定这些睡眠连接的命运,实施会更简单,有效。mysql的配置文件中,有一项:wait_timeout, 即可设置睡眠连接超时秒数,如果某个连接超时,会被mysql自然终止,多好的办法!如设置: wait_timeout=100 #即设置mysql连接睡眠时间为100秒,任何sleep连接睡眠时间若超过100秒,将会被mysql服务自然终止,要比编写shell脚本更简单。那么,对于正在运行中的生产服务器,在不能停止服务情况下,修改此项怎么办?很简单,以root用户登录到mysql,执行:set global wait_timeout=100即可。在我的生产环境中,使用这个办法,取得了相当好的效果。当然,更根本的方法,还是从以上三点排查之:1. 程序中,不使用持久链接,即使用mysql_connect而不是pconnect。2.   程序执行完毕,应该显式调用mysql_close3. 只能逐步分析系统的SQL查询,找到查询过慢的SQL,优化之新版MySQL 数据库安装Linux 中Oracle 10g RAC 关闭crs开机自启动相关资讯      mysql 
  • 数据库服务器 MySQL  (08/15/2013 06:50:23)
  • MySQL 5.6 GA 及逃亡潮  (02/08/2013 14:36:35)
  • MySQL 5.5.22、5.1.62、5.0.96全线  (03/22/2012 19:03:49)
  • MySQL Administrator连接VMWare下  (05/24/2013 09:20:58)
  • MySQL 5.1.68 发布  (02/05/2013 08:37:47)
  • CentOS 5.2+MySQL+Heartbeat双机互  (01/29/2012 11:16:55)
本文评论 查看全部评论 (0)
表情: 姓名: 字数