aws lambda:错误:运行时退出,错误:信号:被杀死

时间:2019-11-26 19:13:50

标签: python amazon-web-services aws-lambda

我正在尝试从S3中提取一个大文件,并使用pandas数据帧将其写入RDS。

我一直在搜索该错误,却从未在任何地方看到它,有人知道这个极其普通的听起来错误可能意味着什么吗?我以前遇到过内存问题,但是扩展内存消除了该错误。

{
  "errorType": "Runtime.ExitError",
  "errorMessage": "RequestId: 99aa9711-ca93-4201-8b1e-73bf31b762a6 Error: Runtime exited with error: signal: killed"
}

4 个答案:

答案 0 :(得分:12)

在执行用于处理图像的lambda时遇到相同的错误,在Web中搜索此错误时只有很少的结果。

increased the memory to 512mb来解决。

enter image description here

答案 1 :(得分:4)

由于 boto3 并行上传文件,您已达到内存限制。 您可以增加 lambda 的内存使用量,但这是作弊……您只会支付更多费用。

默认情况下,S3 cli 使用 multipart_threshold=8MB 并行线程下载大于 max_concurrency=10 的文件。这意味着它将为您的数据使用 80MB,加上线程开销。

例如,您可以减少到 max_concurrency=2,它将使用 16MB,它应该适合您的 lambda 内存。

请注意,这可能会略微降低您的下载性能。

import boto3
from boto3.s3.transfer import TransferConfig

config = TransferConfig(max_concurrency=2)
s3 = boto3.client('s3')
s3.download_file('BUCKET_NAME', 'OBJECT_NAME', 'FILE_NAME', Config=config)

参考:https://docs.aws.amazon.com/cli/latest/topic/s3-config.html

答案 2 :(得分:3)

首先,aws-lambda并不意味着要进行长时间的繁重操作,例如从S3提取大文件并将其写入RDS。

根据文件大小和数据,此过程可能花费太多时间。 aws-lambda的最长执行时间为15分钟。因此,您在lambda中执行的任何任务都应在您提供的时限内完成(最多15分钟)。

在lambda中进行大而繁重的处理时,您可能会遇到内存不足错误,超时错误或有时需要扩展处理能力的情况。

进行此类繁重处理的另一种方法是使用AWS Glue作业,该作业是AWS托管的ETL服务。

答案 3 :(得分:1)

它不会在 15 分钟时超时,因为这会记录此错误“任务在 901.02 秒后超时”,而 OP 没有得到该错误。正如其他人所说,他的内存不足。