Apache2 服务器负载/CPU 从 1% 增加到 90% - 如何调试?

Apache2 服务器负载/CPU 从 1% 增加到 90% - 如何调试?

我在用着:

  • Google 云计算引擎
  • Linux Debian + Apache2
  • 谷歌云 SQL
  • WordPress 的

昨天我的 CPU 开始从 1-5% 增加到 80-90%。当时我正在开发一个 wordpress 网站,但这可能会导致故障。几天前我也遇到过同样的情况,所以我最终停止了 VM 实例,将其克隆到一个新的实例,并恢复了前一天的数据库。

之后,它比以前更好用了!之前我的 CPU 使用率一直保持在 10% 左右,之后是 1%,有时甚至达到 5%。然后在晚上 10:10,它又开始增加。页面加载时间也增加到 15 瑞典克朗甚至更多。

我的 SQL 实例每天晚上 10:00 到凌晨 2 点之间拍摄快照。这也是两次发生的时间。

以下是 CPU 使用率的屏幕截图: https://i.stack.imgur.com/TwM1w.png

也许这些过程也有帮助:

www-data  4184  6.4  1.0 320160 81604 ?        S    13:25   0:38 /usr/sbin/apache2 -k start
www-data  4204  6.0  1.2 332204 93596 ?        S    13:26   0:30 /usr/sbin/apache2 -k start
www-data  4222  6.0  1.2 331948 93340 ?        S    13:28   0:25 /usr/sbin/apache2 -k start
www-data  4244  6.4  1.0 320928 82320 ?        S    13:29   0:21 /usr/sbin/apache2 -k start
www-data  4245  6.4  1.7 373280 134724 ?       S    13:29   0:21 /usr/sbin/apache2 -k start
www-data  4249  6.6  1.2 331696 93136 ?        S    13:29   0:21 /usr/sbin/apache2 -k start
www-data  4253  6.4  1.2 332212 93636 ?        S    13:30   0:16 /usr/sbin/apache2 -k start
www-data  4271  6.2  1.2 332972 94344 ?        S    13:31   0:14 /usr/sbin/apache2 -k start
www-data  4277  6.2  1.5 357044 117944 ?       S    13:32   0:09 /usr/sbin/apache2 -k start
www-data  4278  6.3  1.2 332972 94344 ?        S    13:32   0:09 /usr/sbin/apache2 -k start
www-data  4283  6.3  1.5 356788 117664 ?       S    13:32   0:09 /usr/sbin/apache2 -k start
www-data  4286  5.8  1.2 331696 92852 ?        S    13:32   0:08 /usr/sbin/apache2 -k start
www-data  4287  6.6  1.5 357040 117576 ?       S    13:32   0:09 /usr/sbin/apache2 -k start
www-data  4300  5.7  1.2 331180 92316 ?        S    13:34   0:03 /usr/sbin/apache2 -k start
www-data  4301  6.0  1.2 332976 94120 ?        S    13:34   0:03 /usr/sbin/apache2 -k start
www-data  4302  5.9  1.2 332976 94116 ?        S    13:34   0:03 /usr/sbin/apache2 -k start
www-data  4304  6.2  1.2 331180 92316 ?        S    13:34   0:03 /usr/sbin/apache2 -k start
www-data  4305  5.8  1.2 333232 94392 ?        S    13:34   0:03 /usr/sbin/apache2 -k start
www-data  4306  6.2  1.2 333232 94372 ?        S    13:34   0:03 /usr/sbin/apache2 -k start

我不是专业人士,所以每个小帮助都会很棒!

答案1

我不能 100% 确定您的问题。您说快照是在峰值发生时发生的,所以似乎您已经找到了罪魁祸首。如果这是虚拟机快照,那么您将看到主机 CPU 使用率出现峰值,因为快照确实需要一些时间才能完成,并且根据主机上可用的资源,这将影响客户虚拟机。

如果您说数据库快照是在那时发生的,那么您也将看到此峰值。数据库必须锁定进程和表才能对数据库进行 mysqldump。我也不知道您的数据库的大小,但这里有一篇关于优化 MySQL 快照进程的很好的文章: https://dba.stackexchange.com/questions/20/how-can-i-optimize-a-mysqldump-of-a-large-database/2227#2227

您是否看到主机/虚拟机在 CPU 使用率高时使用了大量交换(页面文件)空间?这可能表明虚拟机的资源管理设置存在问题。CPU 使用率与内存使用没有直接关系,但会在高交换事件中受到影响,这很可能发生在配置不当的 DB VM 上。我见过人们的 DB 服务器设置中最大的错误之一是缺少主轴和分配的内存不足。

我再次没有这方面的全部信息,但您还应该检查是否已为 DB VM 分配了足够的 CPU 资源以确保正常运行。

还原 MySQL 数据库时也应非常小心。在选择还原的点之后,您将丢失对数据库的所有更新,并且通常需要在还原后重新同步数据库...这很不方便。

相关内容