睡眠连接过多,会对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_close

3. 只能逐步分析系统的SQL查询,找到查询过慢的SQL,优化之

最新文章

  1. Shell特殊变量
  2. SpringMVC对异常进行全局处理,并区分对待ajax和普通请求
  3. maven-修改本地仓库存放地址
  4. servlet案例
  5. VC CArchive类使用
  6. Repeater数据绑定和操作
  7. Linux 下搭建www服务器
  8. 如果nginx启动失败,错误解决
  9. dataTables 使用整理
  10. [Flask]学习杂记--模板
  11. Oracle Forms Services Architecture
  12. 哪些类继承了Collection接口
  13. 【ElasticSearch】 elasticsearch-head插件安装
  14. Tensflow的targmax函数
  15. 离线安装Cloudera Manager 5和CDH5(最新版5.9.3) 完全教程(七)界面安装
  16. 错误:“Manifest merger failed with multiple errors, see logs”
  17. 关于 Azure Windows VM 的磁盘和 VHD
  18. WAP2.0(XHTML MP)基础介绍
  19. UVA-575-水题-模拟
  20. 程序媛计划——mysql修改表结构

热门文章

  1. sparksql与hive整合
  2. IplImage 与mat之间的转换及释放内存
  3. 转:Linux实时将所有输出重定向到文件
  4. 51Nod:活动安排问题(区间问题)
  5. beautiful number 数位DP codeforces 55D
  6. hdu1081 DP类最大子段和(二维压缩+前缀和数组/树状数组计数)
  7. test20180830
  8. m mm等和envsetup.sh
  9. 用C实现FFT算法
  10. jaeger 使用ElasticSearch 作为后端存储