上传到S3存储桶的时间会变慢

我上传了大约200,000个文件(每个文件最大大小约为1MB)到EC2实例(在西欧)的S3存储桶中。

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

在这里输入图像说明

我分几次上传文件,通常在四五个小时之后(但有时候会更快),下载似乎是一致的。

这些文件是用一个Python脚本上传的:

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

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

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

…但是我看到每种方法都有同样的下降。

什么可能导致这个? 或者我应该收集哪些信息来进行debugging?

编辑

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

在这里输入图像说明

这是CPUCreditBalance

在这里输入图像说明

我最好的猜测是这是你的EBS I / O信用 。 使用BurstBalance CloudWatch指标监控此项。 请检查,张贴图表,如果不是,我会想更多。

更新 – 我要求您添加的第三个图表显示您已经用完了CPU信用。 你的CPU正在被限制。 您可以接受较慢的性能或临时更改为更适合的实例。

这看起来相当CPU密集。 你可以移动到一个t2大,获得四倍的CPU许可,或者我可能会转移到一个通用的m4实例一段时间。 更改实例types很简单 – 停止实例,右键单击,更改实例types,然后重新启动它。