它是'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,但那里有很多 . 如果您想要在社区内询问,因为可能存在可用的模块,这些模块允许您获取此信息而无需手动集成任何内容 .
3 回答
首先我要说你可能想要关闭持久连接,因为它们几乎总是弊大于利 .
其次我要说你想要仔细检查你的MySQL用户,只是为了确保任何人都无法从远程服务器连接 . 这也是一个重要的安全问题 .
第三,我想说你想打开MySQL Slow Query日志来关注任何花费很长时间的查询,并使用它来确保你没有任何查询锁定密钥表太长时间 .
您可以检查的其他一些事情是在CPU负载较高时运行以下查询:
这将显示当前正在运行或正在运行的队列中的任何查询,查询是什么以及它正在做什么(如果查询太长,此命令将截断查询,您可以使用SHOW FULL PROCESSLIST查看完整查询文本) .
您还需要密切关注缓冲区大小,table cache,query cache和innodb_buffer_pool_size(如果您使用的是innodb表),因为所有这些内存分配都会对查询性能产生影响,从而导致MySQL吃掉中央处理器 .
你也可能想要给出以下内容,因为它们包含一些好的信息 .
How MySQL Uses Memory
MySQL System Variables
它是'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,但那里有很多 . 如果您想要在社区内询问,因为可能存在可用的模块,这些模块允许您获取此信息而无需手动集成任何内容 .
由于这是google for MySQL高CPU使用率或负载的最高职位,我将添加一个额外的答案:
2012年7月1日,当前UTC时间增加了闰秒,以补偿由潮汐引起的地球减速 . 运行ntp(或ntpd)时,第二个被添加到计算机/服务器的时钟中 . MySQLd似乎不喜欢某些操作系统上的额外秒,并产生高CPU负载 . 快速修复(以root身份):
如果外部世界可以看到这个服务器,那么它是否有很多请求从外部世界连接(即试图闯入它的人)是值得的 .