mysql服务器cpu爆满解决办法

e33f47e6062e86f990513f266c8f722d.png

点击上方蓝字关注我们

bcc6a052d146c43a9c6895c2f67ebc3c.png

2b43c50103bfbda874aae58a20af3d08.png

碰到一个mysql cpu爆满的问题,简单记录下

35f30e0e1b711f083bae39150b5ca746.png

步骤:

1、通过show processlist找到耗时最长的

mysql> show processlist;
+----+------+-----------------+------+---------+------+--------------+------------------------------------------------------------------------------------------------------+
| Id | User | Host            | db   | Command | Time | State        | Info                                                                                                 |
+----+------+-----------------+------+---------+------+--------------+------------------------------------------------------------------------------------------------------+
| 19 | root | localhost:60604 | big  | Query   | 1533 | Sending data | SELECT count(*) num,city FROM `ih_user_temp` where city in (select city from ih_user_temp where city |
| 25 | root | localhost       | NULL | Query   |    0 | NULL         | show processlist                                                                                     |
+----+------+-----------------+------+---------+------+--------------+------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

2、先杀掉该进程

mysql> kill 19;
Query OK, 0 rows affected (0.01 sec)

3、通过慢查询日志找到具体的sql语句

开启慢查询:

[mysqld]
slow_query_log=1  #开启慢查询
long_query_time=5 #慢查询时间
log-slow-queries = /var/log/mysql/slowquery.log #需有写入权限

4、使用explain 优化sql语句,

引起cpu过高的sql一般集中在order by、group by、批量insert、嵌套子查询等sql语句中

5、调整my.cnf的query_cache_size和tmp_table_size的值

往期推荐

a2a25e6f29b48c88fa6e48859f463fb3.png

300d51b86f6a147c5bae2b6f35857101.png

别怕!MySQL引起的CPU消耗过大,我有办法

MySQL中一条更新的SQL如何执行

DBA整理的万字详解MySQL性能优化,值得收藏!

52addfb1158a9fb09fdffcd1ac79aae4.png

10665dd362ce7a7108c28b1319396b8b.png

喜欢就点个在看再走吧1d00b9f5491282aa48708016e40f9c7b.png

原文地址:https://www.cnblogs.com/lxwphp/p/15847733.html