2018/07 作者:ihunter 0 次 0
一朋友服务器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攻击之类的
上篇:
Mysql 占用cpu资源高的分析
下篇:
MySQL常用命令