My wife and seed would agree that talking about AWS Lambdas are in my “big three” of things to not shut up about, along with fishing and professional wrestling.
Regardless, I do love them so (both the Lambdas and the fam bam).
As I’ve grown to use them more and more frequently for both work and play, I’ve honed in on how to improve performance as well as how to debug them when they decide to stop working as expected.
Here are a few of my favorite tips and tricks to quickly figure out what may be wrong with your Lambda:
1. Check the recent invocation logs
For all the ridicule that the AWS console receives, they still provide you with everything you need to figure out what the hell may be going wrong. It may be obvious, but checking the logs will usually reveal something, especially if the issue is caused by your code and not a configuration issue.
To check the logs, go to your Lambda, click on Monitor
and then Logs
to list
out recent invocations. Clicking the LogStream
link will get you more details.
2. Check the memory usage
Digging into the logs is great if you have a failure in your code that is dumping out an error, but if you’re maxing out your configured memory allotment, you will need to take a deeper look into the logs to see how much memory was consumed.
An easier approach is to list out the recent invocations (without drilling down into the logs) and you will see how much memory was allocated and how much was consumed. If you’re running out of memory your consumed memory will be the same as the configured memory, but also could be a megabyte or so more.
The values you want are MemorySetInMB
and MemoryUsedInMB
.
3. Check the execution time
Similar to memory usage, if your Lambda is running longer than the configured execution time, it’ll bomb out somewhat silently. By default an AWS Lambda has an execution time of three (3) seconds. This tends to be enough time if your code isn’t doing much and/or isn’t interfacing with external services.
I can’t even tell you how many times this has bit me and some of my peers. Hits especially hard when you’re adding logging to your function and you cry out “it’s not even getting to my code, what the actual eff?!”
Same place as before, but you’ll want to check DurationInMS
and
BilledDurationInMS
.