首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS Lambda异步并发限制

AWS Lambda异步并发限制
EN

Stack Overflow用户
提问于 2017-08-04 18:25:48
回答 1查看 1.7K关注 0票数 7

我正在开发一个AWS函数,该函数目前进行了数百次API调用,但在投入生产时,它将生成数十万次。问题是我不能在那个比例上测试。

我使用异步模块使用async.eachLimit执行api调用,以便限制并发性(我目前将其设置为300)。

我不明白的是AWS Lambda的极限。以下是医生们所说的话:

AWS资源限制每次调用

  • 文件描述符数:1 024
  • 进程和线程数(合计):1 024个

据我所知,Node.js是单线程的,所以我不认为我会超过这个限制。我不使用子进程,异步库在这方面也不太好。

现在,关于这些文件描述符,我的函数严格地调用AWS的其余API,而且我从不将其写入磁盘,因此我不认为我正在使用它们。

AWS的另一个重要限制是执行时间和占用的内存。对于每一次执行,都有非常清楚的报告,我非常清楚何时接近它们,所以现在让我们忽略这些。

有一点背景:

我的功能的确切性质是,每次体育比赛开始时,我都需要订阅所有的移动设备到适当的SNS主题,所以基本上我要调用我们自己的MySQL数据库,然后重复调用AWS端点。

所以问题是..。

在这种情况下,我可以在AWS Lambda中将异步的并发推到多远呢?有什么实际的限制或其他可能发挥作用,我没有考虑?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-04 19:34:18

据我所知,Node.js是单线程的,所以我不认为我会超过这个限制。我不使用子进程,异步库在这方面也不太好。

Node.js是事件驱动的,而不是单线程的。

Javascript引擎在单个线程(事件循环)上运行,并将I/O操作委托给处理其线程池和异步操作的内部库(利布夫)。

async不会单独打开子进程,但是在幕后,无论您是发出HTTP请求还是与文件系统交互,您都会将这些操作委托给libuv

换句话说,您已经用资源限制很好地回答了您自己的问题:

在这种情况下,我可以在AWS Lambda中将异步的并发推到多远呢?有什么实际的限制或其他可能发挥作用,我没有考虑?

AWS资源限制每次调用

  • 文件描述符数:1 024
  • 进程和线程数(合计):1 024个

很难说libuv是否会为每个I/O操作打开一个新线程,因此,您可能会比上面列出的数字稍微多一点。但是,在达到这些限制之前,您可能会耗尽内存。

底线是不,您将无法在单个lambda执行中进行数十万次调用。

关于您的函数的上下文,取决于您的工作需要运行的频率,您可能希望将您的lambda重构为多个执行(它也会运行得更快),或者让它在由lambda触发的自动缩放的EC2上运行。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45513316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档