MySQL的高CPU使用率[关闭](MySQL high CPU usage [closed])

2019-06-18 12:21发布

最近我的服务器CPU已经进行了非常高的。

CPU平均负荷13.91(1分钟),11.72(5分钟),8.01(15分钟)和我的网站也只有在流量略有增加。

运行top命令后,我看到了MySQL的使用160%的CPU!

最近我一直在优化表,我已经切换到持久连接。 难道这是造成MySQL使用量高的CPU?

Answer 1:

首先,我想说,你可能要关闭持久连接,因为他们几乎总是做弊大于利。

其次我说你要仔细检查你的MySQL用户,只是为了确保它不是任何人都有可能是从远程服务器连接。 这也是一个重大的安全事来检查。

第三我说你要打开MySQL的慢查询日志,盯紧那些花费很长的时间有任何疑问,并用它来确保你没有锁定了键的表太久任何疑问。

你可以检查其他一些事情会在CPU负荷较高运行以下查询:

SHOW PROCESSLIST;

这将显示当前正在运行或在队列中运行任何查询,哪些查询是和它在做什么(这个命令将截断如果它太长的查询,你可以使用SHOW FULL PROCESSLIST看到完整的查询文本) 。

你还需要留意的东西像你的缓冲区大小, 表缓存 , 查询缓存和innodb_buffer_pool_size (如果你使用InnoDB表),因为所有这些内存分配可以对查询性能这可能会导致MySQL来的影响吃了CPU。

你也可能会想给下面的一个读了,因为它们包含一些有用的信息。

  • MySQL如何使用内存
  • MySQL的系统变量

这也是使用一个分析器一个很不错的主意。 有些事情,你可以打开,当你想那会告诉你查询你的应用程序正在运行,如果有重复的查询,他们采取了多久,等,等的是这样的一个例子是一个我一直在努力呼吁PHP探查但也有很多了。 如果您使用的是一块像Drupal的是,Joomla或WordPress的软件,你会希望在社区内到处打听,因为这可能模块为他们提供,让您得到这个信息,而无需手动集成任何东西。



Answer 2:

由于这是如果谷歌MySQL的CPU占用率过高或负载的最高职位,我会添加一个额外的答案:

2012年7月1日,一个闰秒添加到当前UTC时间,以补偿地球的自转减慢,由于潮汐。 当运行NTP(或NTPD)本次被添加到您的计算机/服务器的时钟。 mysqld的似乎并不像一些OS'es这个额外的第二,并产生较高的CPU负载。 快速修复是(作为root):

$ /etc/init.d/ntpd stop
$ date -s "`date`"
$ /etc/init.d/ntpd start


Answer 3:

如果此服务器是对外界可见,这是值得一试,如果它有大量的请求从外部世界的连接(即人们试图闯入它)



文章来源: MySQL high CPU usage [closed]