周五改了下小说站的章节存储引擎,并且加了一个站的采集源,突然发现过段时间会报mysql连接数过多,因为周未要代购,也没来得及去排查问题,今天发现问题依旧,生怕百度又把我的站拉黑,所以立即登录服务器进行排查。
一、使用top命令看到的情况如下:
可以看到服务器负载很高,mysql CPU使用已达到360%(因为是四核,所以会有超过100%的情况)。
查看cpu核数(这个是逻辑核)
more /proc/cpuinfo |grep "physical id"|grep "0"|wc -l
二、在服务器上执行mysql -u root -p之后,输入show full processlist; 可以看到正在执行的语句。
可以看到是下面的SQL语句执行耗费了较长时间。
explain SELECT * FROM `chapter` WHERE ( site_id=3 and import=0 and book_id=22029 ) ORDER BY sort asc
周五改引擎的时候,把索引拿掉了,没有加上,章节表相当大,没索引不可想象
同时还发现有distinct语句,这样不会应用索引,所以一并优化掉
三、加上索引后,查询时间大幅度缩短,CPU负载很轻
接下来需要加点监控了,有问题能够提前发现,也能够预知一些隐藏的问题
转载请注明:朋克网 » mysql占用CPU超过100%解决过程