Lambda容器到期时,有没有一种关闭mongo连接的好方法?

时间:2019-06-03 23:20:10

标签: mongodb aws-lambda amazon-dynamodb amazon-dynamodb-streams

我正在使用AWS-lambda处理程序将dynamoDB流写入mongoDB。我想在处理程序外部定义db连接,以便基于我们预期的吞吐量,请求可以重用相同的连接。如果不正确处理连接,lambda容器的问题将过期。

有人知道这个问题有什么好的解决方案吗?本质上可以归结为“我想使用连接池而不最大化连接限制”

1 个答案:

答案 0 :(得分:0)

面对这个问题时,我发现了两种解决方案:

  1. “最佳实践”-为每个Lambda调用创建/关闭MongoDB连接。好主意,如果您知道Lambdas不会经常被调用=>您的Lambdas容器会大声喊叫。
  2. 重用连接拉-对我来说,当您知道Lambda通常会进行足够的调用以保持(可能)使容器保持温暖时,这是正常的。在这种情况下,您应该将socketTimeoutMS选项(猫鼬)设置为足以使其在Lambdas调用之间保持的状态。对我来说是:
 { 
   reconnectTries: 30, 
   reconnectInterval: 500, 
   poolSize: 1, 
   socketTimeoutMS: 2000000, 
   keepAlive: true, 
 }

(连接将在超时后自动关闭)

**仅供参考:如果您使用DynamoDB流作为lambda的触发器,则任何预热都可能不适合您。

**我已经在这里问过类似的问题: AWS Lambda (Node.js, v. 8.10) & Mongoose: MongoNetworkError connection to DB timed out