首页 文章

MySQL高CPU使用率[关闭]

提问于
浏览
168

最近我的服务器CPU一直很高 .

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

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

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

3 回答

  • 161

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

    其次我要说你想要仔细检查你的MySQL用户,只是为了确保任何人都无法从远程服务器连接 . 这也是一个重要的安全问题 .

    第三,我想说你想打开MySQL Slow Query日志来关注任何花费很长时间的查询,并使用它来确保你没有任何查询锁定密钥表太长时间 .

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

    SHOW PROCESSLIST;
    

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

    您还需要密切关注缓冲区大小,table cachequery cacheinnodb_buffer_pool_size(如果您使用的是innodb表),因为所有这些内存分配都会对查询性能产生影响,从而导致MySQL吃掉中央处理器 .

    你也可能想要给出以下内容,因为它们包含一些好的信息 .

    它是's also a very good idea to use a profiler. Something you can turn on when you want that will show you what queries your application is running, if there'的重复查询,他们're taking, etc, etc. An example of something like this is one I'已经工作了多长时间,名为PHP Profiler,但那里有很多 . 如果您想要在社区内询问,因为可能存在可用的模块,这些模块允许您获取此信息而无需手动集成任何内容 .

  • 25

    由于这是google for MySQL高CPU使用率或负载的最高职位,我将添加一个额外的答案:

    2012年7月1日,当前UTC时间增加了闰秒,以补偿由潮汐引起的地球减速 . 运行ntp(或ntpd)时,第二个被添加到计算机/服务器的时钟中 . MySQLd似乎不喜欢某些操作系统上的额外秒,并产生高CPU负载 . 快速修复(以root身份):

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

    如果外部世界可以看到这个服务器,那么它是否有很多请求从外部世界连接(即试图闯入它的人)是值得的 .

相关问题