为了账号安全,请及时绑定邮箱和手机立即绑定

MySQL高CPU使用率

MySQL高CPU使用率

慕桂英3389331 2019-11-21 14:15:39
最近,我的服务器CPU性能一直很高。CPU平均负载为13.91(1分钟)11.72(5分钟)8.01(15分钟),而我的站点的流量仅略有增加。运行完最高命令后,我看到MySQL使用的CPU是160%!最近,我一直在优化表,并切换到持久连接。这会导致MySQL使用大量CPU吗?
查看完整描述

3 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

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

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

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

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

SHOW PROCESSLIST;

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

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

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

  • MySQL如何使用内存

  • MySQL系统变量

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


查看完整回答
反对 回复 2019-11-21
?
慕沐林林

TA贡献2016条经验 获得超9个赞

由于这是如果您在Google上搜索MySQL高CPU使用率或负载的热门文章,我将添加一个附加答案:


2012年7月1日,当前的UTC时间增加了a秒,以补偿由于潮汐引起的地球自转缓慢。运行ntp(或ntpd)时,此秒已添加到计算机/服务器的时钟中。在某些操作系统上,MySQLd似乎并不想多花一秒钟的时间,并且会产生很高的CPU负载。快速修复是(作为根):


$ /etc/init.d/ntpd stop

$ date -s "`date`"

$ /etc/init.d/ntpd start


查看完整回答
反对 回复 2019-11-21
?
侃侃尔雅

TA贡献1801条经验 获得超15个赞

如果该服务器对外界可见,那么值得检查一下是否有大量来自外界的连接请求(例如,试图闯入该服务器的人)


查看完整回答
反对 回复 2019-11-21
  • 3 回答
  • 0 关注
  • 651 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信