记一次解决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,比较合适!我没试~~

你可能感兴趣的:(MYSQL技术篇)