发布时间:2018-01-10 09:38:33编辑:丝画阁阅读(696)
一朋友服务器CPU100%.摄影网站,理论上来说,同时在线不会过百.数据库的连接数更不可能会2000.MySQL我给的2000的链接数,居然跑满了,而且服务器也特别的卡.看来需要入手检查了.
1.第一步,万能的重启.当然可能重启了一会儿还是继续高上去
2.检查连接数和慢查询语句.开始分析了.
我们的原则是,重启能解决的,绝对不开client
cpu100%通常情况下就是有慢sql造成的,这里的慢sql包括全表扫描,扫描数据量过大,内存排序,磁盘排序,锁争用等待等...
一般表现现象sql执行状态为:Sending data,Copying to tmp table,Copying to tmp table on disk,Sorting result,locked
通过show processlist查看当前正在执行的sql,当执行完show processlist后出现大量的语句,通常其状态出现Sending data,Copying to tmp table,Copying to tmp table on disk,Sorting result, Using filesort都是sql有性能问题
可以用explain查看sql执行效率,分析索引
解决方案整理
1.Sending data表示:sql正在从表中查询数据,如果查询条件没有适当的索引,则会导致sql执行时间过长;
2.Copying to tmp table on disk:出现这种状态,通常情况下是由于临时结果集太大,超过了数据库规定的临时内存大小,需要拷贝临时结果集到磁盘上,这个时候需要用户对sql进行优化;
3.Sorting result, Using filesort:出现这种状态,表示sql正在执行排序操作,排序操作都会引起较多的cpu消耗,通常的优化方法会添加适当的索引来消除排序,或者缩小排序的结果集;
4.出现sending data的情况:这种一般就是SQL不规范,优化SQL吧.
5.检查网站是不是有被CC攻击之类的
关键字:
本站部分内容来源网络及网友上传,本站未必能一一鉴别其是否为公共版权或其版权归属,如果您认为侵犯您的权利,本站将表示非常抱歉!
请您速联系本站,本站一经核实,立即删除。删文删帖联系【2789291421@qq.com】