一尘不染

MySQL高CPU使用率

mysql

关闭。 这个问题是题外话。它当前不接受答案。


想改善这个问题吗? 更新问题,使其成为Stack Overflow
的主题

7年前关闭。

最近,我的服务器CPU性能一直很高。

CPU平均负载为13.91(1分钟)11.72(5分钟)8.01(15分钟),而我的站点的流量仅略有增加。

运行完最高命令后,我看到MySQL使用的CPU是160%!

最近,我一直在优化表,并切换到持久连接。这会导致MySQL使用大量CPU吗?


阅读 244

收藏
2020-05-17

共1个答案

一尘不染

首先,我想您可能要关闭持久性连接,因为它们几乎总是弊大于利。

其次,我想您要仔细检查您的MySQL用户,以确保任何人都无法从远程服务器进行连接。这也是要检查的主要安全事项。

第三,我想说你想打开MySQL Slow Query Log来监视花费很长时间的任何查询,并使用它来确保没有任何查询锁定键表太长时间。

您可以检查的其他一些事情是在CPU负载很高时运行以下查询:

SHOW PROCESSLIST;

这将向您显示当前正在运行或正在运行的队列中的任何查询,查询的内容以及查询的状态(如果该查询过长,该命令将截断查询,您可以使用SHOW FULL
PROCESSLIST查看完整的查询文本) 。

您还需要注意缓冲区大小,表缓存查询缓存innodb_buffer_pool_size(如果使用的是innodb表)之类的东西,因为所有这些内存分配都可能影响查询性能,这可能导致MySQL吃光CPU。

您可能还想对以下内容进行重新阅读,因为它们包含一些有用的信息。

使用探查器也是一个很好的主意。您可以在需要时启用一些功能,以向您显示应用程序正在运行的查询,是否存在重复的查询,查询需要花费多长时间等。类似的示例就是我一直在努力的一个示例。PHP
Profiler,
但是有很多。如果您使用的是Drupal,Joomla或Wordpress之类的软件,您可能想在社区中四处询问,因为可能有可用的模块可以让您获得此信息而无需手动集成任何东西。

2020-05-17