在 EFS 卷上使用 Ubuntu AMI 挂起 Apache 请求

在 EFS 卷上使用 Ubuntu AMI 挂起 Apache 请求

我注意到,我在 AWS(eu-south-1 区域)上创建的设置存在奇怪的行为,用于评估从我们当前提供商进行的迁移。我想部署 1-n 个 EC2 实例,通过 Apache 处理 Web 请求,处理存储在通用 EFS 卷上的文件。我已经实施并测试了 RDS 部分、PHP 性能、ElasticCache 集成等。但是,我注意到零星请求有 5 秒的延迟,这种延迟似乎非常确定,并且太接近 5 秒的值。EFS 卷处于突发模式,信用额度很高(2T),使用率百分比非常低,所以这应该不是问题。

我使用建议的选项挂载了 EFS 卷,包括“EFS 挂载助手”和“NFS 客户端”,但没有任何变化。因此,我尝试从头开始重新启动,只安装默认的 Apache Web 服务器(甚至尝试使用 Nginx,结果类似),然后使用以下命令从另一个 EC2 实例挂载 EFS 卷并进行基准测试:

siege -c 2 -r 20 -b http://35.152.48.17/efs-mount-point/efs-test/logo.png

使用 Ubuntu 18.04 和 Ubuntu 20.04,最长事务始终超过 5 秒(5.12 - 5.42 秒)。而使用 AmiLinux,最长事务足够快(0.15 秒)。有趣的是,如果我将并行客户端从 2 降低到 1:

siege -c 1 -r 20 -b http://35.152.48.17/efs-mount-point/efs-test/logo.png

即使我让“siege”运行更多次,最长的事务在 Ubuntu 上也是可以的:

siege -c 1 -r 10000 -b http://35.152.48.17/efs-mount-point/efs-test/logo.png

但是,如果我们删除 Ubuntu 上的 EFS 变量并从本地 EBS 提供文件,最长的事务速度会非常快(几毫秒),因此问题只会出现在 Ubuntu 的 EFS 上(18.04 和 20.04)。也许建议的安装选项适用于 AmiLinux,但缺少 Ubuntu AMI 的某些功能?

重现步骤非常简单,对我来说感觉很奇怪:

  1. 选择 Ubuntu 18.04 AMI;
  2. 挂载 EFS 卷(使用“EFS 挂载助手”或 NFS 客户端);
  3. 安装 Apache 并仅更新服务目录。

有什么建议吗?

答案1

我终于找到了解决方案。

此问题仅发生在内核“5.4.0-1029-aws”和“5.4.0-1032-aws”中。此问题似乎已在内核“5.4.0-1034-aws”和“5.4.0-1035-aws”版本中得到解决。

因此,你只需要升级内核:

sudo apt-get-update
sudo apt-get install linux-image-5.4.0-1035-aws

然后,重启后,你应该已经安装好了新内核。使用以下命令检查它:

uname -r

您应该看到这个结果:

5.4.0-1035-aws

那么你就不应该再有延迟了。

相关内容