利用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,比较合适!我没试~~
利用命令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,比较合适!我没试~~