其实可以使用MySQL内部的表定位问题SQL,通过这个SQL来定位问题,通过这个SQL的查询结果可以定位具体的SQL问题,然后再进行优化,而我的CPU偏大原因就是因为部分使用了like查询,优化这个部分mysql就正常了。
一般是睡眠连接过多,严重消耗mysql服务器资源(主要是cpu, 内存),并可能导致mysql崩溃。解决办法 :
mysql的配置my.ini文件中,有一项:
wait_timeout, 即可设置睡眠连接超时秒数,如果某个连接超时,会被mysql自然终止。
wait_timeout过大有弊端,其体现就是MySQL里大量的SLEEP进程无法及时释放,拖累系统性能,不过也不能把这个指设置的过小,否则你可能会遭遇到“MySQL has gone away”之类的问题,通常来说,我觉得把wait_timeout设置为10是个不错的选择,但某些情况下可能也会出问题,比如说有一个CRON脚本,其中两次SQL查询的间隔时间大于10秒的话,那么这个设置就有问题了(当然,这也不是不能解决的问题,你可以在程序里时不时mysql_ping一下,以便服务器知道你还活着,重新计算wait_timeout时间):
mysql>show global variables like 'wait_timeout'
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| wait_timeout | 120|
+----------------------------+-------+
mysql>set global wait_timeout=20
至此,mysql占用cpu下降了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)