我注意到,我在 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 的某些功能?
重现步骤非常简单,对我来说感觉很奇怪:
- 选择 Ubuntu 18.04 AMI;
- 挂载 EFS 卷(使用“EFS 挂载助手”或 NFS 客户端);
- 安装 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
那么你就不应该再有延迟了。