记一次解决mysql进程数居高不下的问题

利用show full processlist查看所有进程列表,发现有茫茫多sleep的进程

利用命令show status like '%thread%';
查看进行的状态,出现类似以下数据,Threads_connected 的值比较大
Delayed_insert_threads  0     
Slow_launch_threads     0     
Threads_cached          0     
Threads_connected       16    
Threads_created         309   
Threads_running         1 


看到以上的信息,就知道,原来是等待的进程数太多了,网上搜了一下,造成sleep数多的原因主要有以下几种
1. 使用了太多持久连接
2. 程序中,没有及时关闭mysql连接
3. 数据库查询不够优化,过度耗时


最后的我的原因为在创建pdo时,指定成为了长链接模式
new PDO($dsn, $username, $password, array(PDO::ATTR_PERSISTENT => true)); 


附录:
另外还有一种较暴力的解决方法,设置wait_timeout的值,系统默认为28800,
show global variables like 'wait_timeout';
有人建议设置成10,比较合适!我没试~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值