从另一个调用Lambda时出现模糊的“超出费率”错误。有什么方法可以追踪超出的速率吗?
我有一个接收文件的过程,并将每一行放在Kinesis Stream上。 lambda已配置为使用Kinesis流作为事件源。目标是尽快处理大型文件。
Kinesis流配置有50个分片。当侦听Kinesis事件的Lambda调用另一个Lambda时,会发生“超出速率”错误。
这是捕获错误的catch块:
} catch (ex) {
if (ex instanceof RetryableError) {
console.error('Error processing record, retry enabled.', ex);
} else {
console.error('Error processing record, retry disabled.', ex);
}
}
CloudWatch日志显示:
2018-09-10T06:55:03.454Z d04484eb-e006-4180-8618-0c543497a637 Error processing record, retry disabled. Error: 500 - "Rate exceeded"
at httpRequest.then.catch.err (/var/task/fileProcessor/streamProcessor/index.js:105442:19)
at tryCatcher (/var/task/fileProcessor/streamProcessor/index.js:5811:23)
at Promise._settlePromiseFromHandler (/var/task/fileProcessor/streamProcessor/index.js:76426:31)
at Promise._settlePromise (/var/task/fileProcessor/streamProcessor/index.js:76483:18)
at Promise._settlePromise0 (/var/task/fileProcessor/streamProcessor/index.js:76528:10)
at Promise._settlePromises (/var/task/fileProcessor/streamProcessor/index.js:76603:18)
at Async._drainQueue (/var/task/fileProcessor/streamProcessor/index.js:76829:16)
at Async._drainQueues (/var/task/fileProcessor/streamProcessor/index.js:76839:10)
at Immediate.Async.drainQueues (/var/task/fileProcessor/streamProcessor/index.js:76713:14)
at runCallback (timers.js:794:20)
at tryOnImmediate (timers.js:752:5)
at processImmediate [as _immediateCallback] (timers.js:729:5)
通常情况下,前1-10行(总共5000行)可以很好地处理。然后,此错误将使其余各行失效。
根据Lambda监视器页面,最大并发执行次数为492,这是N. Virginia,因此限制为1000。但是,调试显示,发送HTTP请求调用的代码抛出了错误。另一个lambda。
我已经检查了另一个Lambda的CloudWatch日志,并且每个请求均得到正确处理。因此看来此错误阻止了处理Lambda的请求。