我从lambda_A调用lambda_B 22次(异步),单个lambda_B调用在3秒内完成执行,因此当我异步调用22λ时,应该需要大约3秒的时间。但是需要16-20秒的时间
下面是我使用的示例代码
async callingLambda(arrayvalue) {
try {
const lambdaResponse = await BPromise.all(
arrayvalue.map((leg) => {
return new BPromise((resolve, reject) => {
const FunctionName = 'Lambda_B';
lambda.invoke({
FunctionName: FunctionName,
InvocationType: 'RequestResponse',
LogType: 'Tail',
Payload: JSON.stringify(reqParmaters)
}, function(error, data) {
if (error) {
reject(error);
} else {
resolve(body.errors.length ? null : body.data);
}
});
});
})
);
return lambdaResponse;
} catch (error) {
return BPromise.reject(error);
}
}我做了一些观察,也就是说,如果我将调用次数减少到4-6,那么大约需要3秒,但当我增加调用次数时,时间也会增加。
根据我的研究,这个问题可能是由于no。nodejs并行处理的I/O操作数等于UV_THREADPOOL_SIZE,UV_THREADPOOL_SIZE的默认值为4。
我也增加了UV_THREADPOOL_SIZE的大小,但它不工作。
发布于 2018-09-14 09:08:33
在调用过程的参数中有一个问题。参考AWS:您必须设置异步调用的Lambda文档
InvocationType: 'Event'而不是:
InvocationType: 'RequestResponse'看一看https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Lambda.html
https://stackoverflow.com/questions/52221930
复制相似问题