我遇到了一个问题,即通过 aws cli 上传到 AWS S3 和从 AWS S3 下载非常慢。非常慢是指 211k 文件始终需要大约 2.3 秒,这表明平均下载速度低于 500Kb/s,这对于这么小的文件来说非常慢。我的 web 应用程序严重依赖于内部 API,我缩小了范围,API 的大部分往返性能主要与从 S3 上传和下载文件有关。
一些细节:
- 在 AWS 托管的 EC2 实例上使用最新版本的 aws cli(aws-cli/1.14.44 Python/3.6.6、Linux/4.15.0-34-generic botocore/1.8.48)
- 实例正在运行最新版本的 Ubuntu (18.04)
- 实例位于区域 ap-southeast-2a(悉尼)
- 实例通过最小权限策略被授予基于角色的 S3 访问权限(即它需要访问的存储桶的最小权限)
- 类型是 t2.micro 应该有~60Mb左右的互联网带宽
- S3 存储桶位于 ap-southeast-2
- 加密(默认)和未加密文件的结果相同
- 无论文件在对象名称中是否有随机的字母数字字符集合,结果都相同
- 该问题始终存在,即使在多次 cp 尝试之后,并且在重新启动后,cp 尝试始终需要 2.3 秒
- 这让我怀疑 S3 或 EC2 实例(使用标准 Internet 网关)是否受到限制
- 我已经测试使用 wget 从同一个实例下载同一个文件到网络服务器,它需要 0.0008s(即 8ms)
所以总结一下:
- 通过 AWS CLI 从 S3 下载文件需要 2.3 秒(即 2300 毫秒)
- 通过 wget 从网络服务器(> Internet …