上传到 S3 存储桶的速度会随着时间的推移而变慢

上传到 S3 存储桶的速度会随着时间的推移而变慢

我正在从 EC2 实例(均位于欧洲西部)向 S3 存储桶上传大约 200,000 个文件(每个最大约 1MB)。

通过使用 CloudWatch 监控 EC2(查看指标NetworkOut),上传传输量似乎随着时间的推移有所下降:

在此处输入图片描述

我分几批上传文件,速度下降的现象似乎很一致,通常是在四五个小时后(但有时发生得更快)。

这些文件是使用 Python 脚本上传的,该脚本:

  1. 从第三方服务器下载 .zip 文件
  2. 从 .zip 中提取大约 25 个文件,并对每个文件进行 gzip 压缩
  3. 将 .gzip 文件上传到存储桶

我尝试了两种上传 .gzip 文件的方法......

  • 依次使用 boto3:boto3.client("s3").upload_file(file.gz, bucket, file.gz)
  • 将 AWS CLI 作为子进程运行,一次上传 25 个 .gzip 文件

...但我发现每种方法的下降幅度都是一样的。

这可能是什么原因造成的?或者我应该收集哪些信息来调试它?

编辑

这是同一时期的图表,显示了BurstBalance指标(EC2 实例是 t2.small):

在此处输入图片描述

这里是CPUCreditBalance

在此处输入图片描述

答案1

我猜是你的EBS I/O 积分. 使用以下方式监控突发平衡CloudWatch 指标。请检查,发布图表,如果不是,我会再考虑一下。

更新- 我要求您添加的第三张图表显示您的 CPU 积分已用完。您的 CPU 正在受到限制。您可以接受较慢的性能,也可以暂时更改为更合适的实例。

这看起来相当耗 CPU。您可以移至大型 t2 并获得四倍的 CPU 配额,或者我可能会暂时移至通用 m4 实例。更改实例类型很容易 - 停止实例,右键单击,更改实例类型,然后重新启动它。

相关内容