Amazon web services 从Lambda更新AWS S3文件时出现可怕的性能峰值
我从JavaScript Lambda内部调用S3.putObject,更新小JSON文件2->10K。 通常性能正常-通常在100ms以下。然而,我偶尔会遇到10-20秒的令人担忧的尖峰。我在几分钟的范围内出现了一些尖峰。到目前为止最糟糕的是587秒 有人见过类似的东西吗 看起来问题不是S3特有的,而是由网络故障和默认SDK Http超时设置为120秒引起的。修复方法是设置maxRetries和httpOptions,如下所示Amazon web services 从Lambda更新AWS S3文件时出现可怕的性能峰值,amazon-web-services,performance,amazon-s3,aws-lambda,Amazon Web Services,Performance,Amazon S3,Aws Lambda,我从JavaScript Lambda内部调用S3.putObject,更新小JSON文件2->10K。 通常性能正常-通常在100ms以下。然而,我偶尔会遇到10-20秒的令人担忧的尖峰。我在几分钟的范围内出现了一些尖峰。到目前为止最糟糕的是587秒 有人见过类似的东西吗 看起来问题不是S3特有的,而是由网络故障和默认SDK Http超时设置为120秒引起的。修复方法是设置maxRetries和httpOptions,如下所示 import aws from "aws-sdk&quo
import aws from "aws-sdk";
aws.config.logger = console;
const config = {
maxRetries: 5,
httpOptions: { timeout: 4 * 1000, connectTimeout: 2 * 1000 }
};
const S3 = new aws.S3(config);
另请注意,设置记录器会导致将时间和重试次数写入Cloudwatch日志。您如何衡量这一点?给定Lambda调用的持续时间?记录对S3.putObject()的调用。在调用之前和之后执行Date.now(),并将差异记录在控制台日志中。然后过滤Cloudwatch日志。只是想一想——如果你连续快速更新10k个文件,你可能达到每秒1k个对象的速率限制。如果没有看到失败,那么重试可能会导致额外的延迟。如果是这样的话,有一种方法可以修复它…为JSON S3对象使用不同的前缀。理想情况下,每个前缀都指向不同的分区,每个分区都有自己的速率限制。希望我没有错。:)