Javascript 拉链与亚马逊lambda。为什么慢?
我想使用AmazonLambda和s3存储桶实现高性能的文件压缩。我想压缩的文件放在一个桶里。我正在测试的lambda应该获取文件路径,并从它们在同一个bucket上创建一个Javascript 拉链与亚马逊lambda。为什么慢?,javascript,node.js,performance,amazon-s3,aws-lambda,Javascript,Node.js,Performance,Amazon S3,Aws Lambda,我想使用AmazonLambda和s3存储桶实现高性能的文件压缩。我想压缩的文件放在一个桶里。我正在测试的lambda应该获取文件路径,并从它们在同一个bucket上创建一个zip 我正在使用这个库,并且正在测试它,就像在这个示例中一样: 我只是运行了一个测试,将两个文件的路径作为输入。其中一个有2MB,第二个有58KB,它们是docx和doc类型。 测试事件如下所示: { "region": "eu-west-1", "bucket": "bucket_name",
zip
我正在使用这个库,并且正在测试它,就像在这个示例中一样:
我只是运行了一个测试,将两个文件的路径作为输入。其中一个有2MB,第二个有58KB,它们是docx
和doc
类型。
测试事件如下所示:
{
"region": "eu-west-1",
"bucket": "bucket_name",
"folder": "folder_name/",
"files": [
"file1.doc",
"file2.docx"
],
"zipFileName": "test.zip"
}
我拿到了这份测试报告
START RequestId: xxx Version: $LATEST
2016-07-26T20:40:02.084Z xxx event {
region: 'eu-west-1',
bucket: 'bucket_name',
folder: 'folder_name/',
files: [ 'file1.doc', 'file2.docx' ],
zipFileName: 'test.zip' }
2016-07-26T20:40:02.765Z xxx append to zip file1.doc
2016-07-26T20:40:04.364Z xxx append to zip file2.docx
2016-07-26T20:40:04.364Z xxx end -> finalize
2016-07-26T20:40:07.066Z xxx { loaded: 3011247,
total: 3011247,
part: 1,
key: 'folder_name/test.zip' }
2016-07-26T20:40:08.232Z xxx { ETag: '"xyz"',
Location: 'https://bucket_name.s3.amazonaws.com/folder_name/test.zip',
key: 'folder_name/test.zip',
Key: 'folder_name/test.zip',
Bucket: 'bucket_name' }
END RequestId: xxx
REPORT RequestId: xxx Duration: 6149.09 ms Billed Duration: 6200 ms Memory Size: 128 MB Max Memory Used: 75 MB
这意味着amazon lambda需要超过6秒才能完成任务。看起来很慢。我能快点吗?我已经尝试过给lambda更多的内存,但没有任何结果
重要的是,我将lambda作为zip文件上传,因为我需要我正在使用的库的节点模块依赖项。我想我在这里找到了答案:我只对一个小文件重复了测试,并在4秒钟内得到了结果。我认为这证实了问题在于启动lambda函数。请确保尝试更大的内存大小。增加内存大小可以显著提高速度,因为垃圾收集不需要经常(或根本不需要)运行。对于Java来说尤其如此。当然,随着内存的增加,CPU时间也相应增加,所以这是一个双赢的结果。正如您所看到的,确保多次运行任何测试,以比较冷启动和热启动。