MySQL 高 CPU 使用率

标签 mysql cpu-usage

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

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

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

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

最佳答案

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

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

第三,我想说你想打开 MySQL Slow Query记录以密切关注任何需要很长时间的查询,并使用它来确保您没有任何查询锁定键表太久。

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

SHOW PROCESSLIST;

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

您还需要注意诸如缓冲区大小之类的事情,table cache , query cacheinnodb_buffer_pool_size (如果您使用的是 innodb 表),因为所有这些内存分配都会影响查询性能,从而导致 MySQL 占用 CPU。

您可能还想阅读以下内容,因为它们包含一些很好的信息。

使用分析器也是一个非常好的主意。您可以在需要时打开一些东西,它会显示您的应用程序正在运行哪些查询,是否有重复的查询,它们花费了多长时间等等。我一直在研究的一个例子是这样的PHP Profiler但那里有很多。如果您使用的是 Drupal、Joomla 或 Wordpress 等软件,您可能需要在社区内四处询问,因为可能有可用的模块让您无需手动集成任何东西即可获取这些信息。

关于MySQL 高 CPU 使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1282232/

相关文章:

php - 如何使用 PHP 在表中保存禁用的组合框和单选按钮

linux - top 显示高用户空间 CPU 使用率,但所有进程显示 0

Java程序(Tomcat)不断吃内存(RES in top)

Tomcat占用CPU高

mysql,如何选择没有节点的树

php - magento中的concat sql查询

linux - Linux 中是否可以通过/sys 获取特定核心的当前 CPU 利用率?

linux - Fortran LAPACK : high CPU %sys usage with DSYEV - no parallelization - normal?

java - 如何在 Java 中将 SQL 日期转换为字符串?

php - 使用 php 清理搜索查询