在 CentOS 7 上查找高负载罪魁祸首(Apache)

在 CentOS 7 上查找高负载罪魁祸首(Apache)

我在 AWS 上有一台 CentOS 7 服务器,有 4 个 CPU 和 8 GB RAM。从上周晚些时候开始,我开始每天多次遇到高负载峰值,Apache 似乎是罪魁祸首。它完全是最新的,使用了最新的软件包。

为了尝试隔离,我安装了 Monitorix,这样我就可以看到峰值的图表。我还开始记录uptime每一分钟,试图看看峰值何时发生。我注意到它们似乎大约每 6 小时发生一次(午夜、上午 6 点、中午和下午 6 点)。

18:07:02 up 1381 days, 17:55, 2 users, load average: 0.51, 0.67, 1.13
18:08:04 up 1381 days, 17:56, 2 users, load average: 6.86, 2.01, 1.54
18:09:30 up 1381 days, 17:57, 2 users, load average: 101.18, 32.53, 12.26
18:10:02 up 1381 days, 17:58, 2 users, load average: 80.26, 34.50, 13.59
18:11:01 up 1381 days, 17:59, 2 users, load average: 30.24, 28.51, 12.84
18:12:01 up 1381 days, 18:00, 2 users, load average: 11.99, 23.59, 12.13
18:13:01 up 1381 days, 18:01, 2 users, load average: 5.26, 19.50, 11.44
18:14:01 up 1381 days, 18:02, 2 users, load average: 2.14, 16.03, 10.75
...
00:57:01 up 1382 days, 45 min, 2 users, load average: 0.28, 0.39, 0.50
00:58:04 up 1382 days, 46 min, 2 users, load average: 11.42, 2.85, 1.30
00:59:01 up 1382 days, 47 min, 2 users, load average: 4.90, 2.49, 1.26
01:00:01 up 1382 days, 48 min, 2 users, load average: 1.80, 2.04, 1.18
...
12:42:01 up 1382 days, 12:30, 2 users, load average: 0.20, 0.47, 0.56
12:43:09 up 1382 days, 12:31, 2 users, load average: 35.63, 8.82, 3.32
12:44:02 up 1382 days, 12:32, 2 users, load average: 48.94, 18.08, 6.86
12:45:02 up 1382 days, 12:33, 2 users, load average: 18.50, 14.97, 6.49
12:46:01 up 1382 days, 12:34, 2 users, load average: 8.13, 12.56, 6.19
12:47:01 up 1382 days, 12:35, 2 users, load average: 2.99, 10.27, 5.80
12:48:01 up 1382 days, 12:36, 2 users, load average: 1.14, 8.42, 5.44

当我查看 Monitorix 图像时,似乎是 Apache 线程导致了这个问题,因为它们也出现了峰值。当我可以跟踪 PID 时,我看到网站上有大量读取(这托管了多个 Wordpress 网站)。内存分配略有增加,当我运行以节省时间时,交换空间并未 100% 使用。

我开始记录 MySQL 慢查询,我相信记录的内容不是原因,因为它们是简单的 Wordpress SELECT 语句,并且都是在出现峰值时(因此是结果,而不是原因)。

我也安装了 fail2ban,但它并没有真正记录/阻止任何东西。

我最后检查了所有的 cron,没有发现任何计划每 6 小时运行一次的会导致这种情况的计划。

我也确实看到磁盘 I/O 峰值,大约在这些时间左右(Wordfence?)。Apache 工作者在这些时间也会出现峰值,因为它们的平均数量约为 10-15,直到今天就飙升到 40、80 或 180。

我还能查看/记录什么?我 99% 确定是 Apache 导致了这个问题。所有 Wordpress 网站都是最新的,并且正在运行 Wordfence(扫描设置设置为较低的使用率以节省资源,并且阻止设置为不执行所有记录)。

短暂性失眠!

答案1

对于我的问题,它似乎与 wp-cron.php 运行时触发的几个访问文件的插件有关。这些插件给系统带来了负担(Wordfence 和 UpDraft Plus)。更改一些设置似乎可以减轻压力。

相关内容