当某个Lambda的并发执行数达到默认的1000后,不仅会影响自身的执行,同时会影响同一region下的其他函数,因为默认的quota是应用在一个region下所有Lambda的。例如当ALB后面的Lambda并发数超出最大限制后,挂到API Gateway下面的Lambda一起会被Throttle:
S3 Event Notification调用Lambda属于异步的方式。如果某时刻我们向S3中同时上传成千上万个文件,会触发throttle:
当发生throttle时,Lambda将该事件重新放到内部队列里,待下次从队列里取出来继续处理,事件在队列里最大保留时长为6个小时
创建新的Lambda:
在Lambda的Configuration -> Concurrency
页面,进行编辑,设置Reserved concurrency:
为了测试Throttle效果,我们把Reserve concurrency
设置成0,这样最多同时只有0个函数执行 = 无法执行,永远被throttle:
保存后,创建一个测试事件。再运行测试,提示invoke API Rate Exceeded
:
将Reserve concurrency
更改为20,可以看到unreserved account concurrency
变为980:
注意Unreserved account concurrency
值不能低于100:
总结: