Serverless Offline causes MongoDb Atlas to run out of connections

Sharing is Caring

I was recently working on a serverless api that uses serverless offline, express.js and mongodb.

We were running out of mongodb database connections when we were running it locally and connecting to the hosted database.

We onboarded a larger group of developers for a few months to help on a few bugs and started getting emails from MongoDB Atlas telling us that we ran out of connections.

I thought this was really strange because I thought serverless offline was working the same way as AWS Lambda does – it only starts the index.js the first run but that isn’t correct.

Every function run causes all of the code to run again which means you could be quickly running through connections if you aren’t cleaning up at the end.

To fix this, you need to disconnect mongodb if it’s connected in the response and make sure that you connect to it prior to the request being sent off to express.

This solution should work fine for you if you are using any version of serverless 2 – process.env.IS_OFFLINE is deprecated in version.

This solution should also work if you are using the following libraries:

  • serverless-http
  • mongoose
  • express

Also published on Medium.

Sharing is Caring

Brian is a software architect and technology leader living in Niagara Falls with 13+ years of development experience. He is passionate about automation, business process re-engineering, and building a better tomorrow.

Brian is a proud father of four: two boys, and two girls and has been happily married to Crystal for more than ten years. From time to time, Brian may post about his faith, his family, and definitely about technology.