I'm dealing with some frustrating cold start times on my Node.js Lambda function that uses the AWS SDK for DynamoDB. When the function hasn't run in a while, the first read can take anywhere from 800ms to over 2 seconds to complete, but I know it's not the database that's slow; it's all the daemon processes that get kicked off like the Lambda spin-up and the Node.js runtime boot, in addition to the SDK and credential resolution processes. I'd rather not keep the function warm with a ping every 5 minutes as a solution, since that feels like a hack. Are there any better strategies or fixes for improving these cold start times?
2 Answers
Cold starts for Node.js Lambdas typically land around 500ms. You might want to try something like tree shaking to optimize your cold start times. Also, AWS has a low latency runtime in beta that could be worth checking out if you're okay with experimental solutions.
Could you share a code sample? Are you generating your DynamoDB client inside the handler or outside? Using Lambda Power Tuner can also help you optimize. It’s worth exploring how you structure your code to see if there are improvements to be made.
Thanks for the reply! I have the client initialized at the top level of my index.ts file, not inside the handler. Here’s a sample: [dpaste.org link]. I log the read time, and it's often around 898ms.