我正在开发一个AWS Lambda函数,目前需要调用数百个API,但在投入生产后将会调用数十万次。问题是我无法以那样的规模进行测试。
我使用async模块来执行我的api调用,使用async.eachLimit以便我可以限制并发(我当前将其设置为300)。
我不理解的是AWS Lambda的限制。这里是文档中所说的:
AWS Lambda每次调用的资源限制
文件描述符数量:1024
进程和线程数量(总和):1024
据我所知,Node.js是单线程的,所以我认为不会超过该限制。我没有使用子进程,async库也没有使用,所以在这方面OK。
现在关于那些文件描述符,我的函数严格调用了AWS的其余API,并且我从未写入磁盘,因此我认为我没有使用它们。
其他重要的AWS Lambda限制是执行时间和内存消耗。每次执行时都会清楚地报告它们,我非常清楚自己是否接近达到它们的限制,因此现在我们忽略这些限制。
一点背景信息:
我的函数的确切性质是,每当开始一场体育比赛时,我需要订阅所有移动设备到相应的SNS主题,因此基本上我会反复调用我们自己的MySQL数据库,然后是AWS SNS终端节点。
所以问题是...
在这种情况下,我能够推动AWS Lambda中异步并发的极限吗?是否存在任何实际限制或其他可能影响我未考虑的因素?
我使用async模块来执行我的api调用,使用async.eachLimit以便我可以限制并发(我当前将其设置为300)。
我不理解的是AWS Lambda的限制。这里是文档中所说的:
AWS Lambda每次调用的资源限制
文件描述符数量:1024
进程和线程数量(总和):1024
据我所知,Node.js是单线程的,所以我认为不会超过该限制。我没有使用子进程,async库也没有使用,所以在这方面OK。
现在关于那些文件描述符,我的函数严格调用了AWS的其余API,并且我从未写入磁盘,因此我认为我没有使用它们。
其他重要的AWS Lambda限制是执行时间和内存消耗。每次执行时都会清楚地报告它们,我非常清楚自己是否接近达到它们的限制,因此现在我们忽略这些限制。
一点背景信息:
我的函数的确切性质是,每当开始一场体育比赛时,我需要订阅所有移动设备到相应的SNS主题,因此基本上我会反复调用我们自己的MySQL数据库,然后是AWS SNS终端节点。
所以问题是...
在这种情况下,我能够推动AWS Lambda中异步并发的极限吗?是否存在任何实际限制或其他可能影响我未考虑的因素?