我注意到我在 AWS(eu-south-1 区域)上创建的用于评估从我们当前提供商的迁移的设置的奇怪行为。我想部署 1-n 个 EC2 实例,这些实例通过 Apache 为 Web 请求提供服务,为存储在通用 EFS 卷上的文件提供服务。我已经实现并测试了 RDS 部分、PHP 性能、ElasticCache 集成等。但是,我注意到零星请求有 5 秒的延迟,这个延迟似乎非常确定,并且太接近 5 秒的值。EFS卷处于突发模式,信用很高(2T),使用百分比很低,所以这应该不是问题。
我使用“EFS 挂载助手”和“NFS 客户端”建议的选项挂载了 EFS 卷,没有任何改变。因此,我尝试从头开始重新启动,只安装默认的 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
最长的事务在 Ubuntu 上也可以,即使我让“围攻”运行更多重复:
siege -c 1 -r 10000 -b http://35.152.48.17/efs-mount-point/efs-test/logo.png
但是,如果我们在 Ubuntu 上删除 EFS 变量并从本地 EBS 提供文件,那么最长的事务会非常快(几毫秒),因此问题只出现在带有 Ubuntu(18.04 和 20.04)的 EFS 上。也许建议的安装选项适用于 AmiLinux,但缺少适用于 Ubuntu AMI 的东西?
重现步骤非常简单,以至于我觉得很奇怪:
- 选择 Ubuntu 18.04 AMI;
- 挂载 EFS 卷(使用“EFS 挂载助手”或 NFS 客户端);
- 安装 Apache 只更新服务目录。
有什么建议吗?