AWS Lambdaのコールドスタートの有無とコールドスタートに要した時間を確認する方法

Lambdaのコールドスタートの有無やコールドスタートにかかった時間を調査する方法を記載します。

コールドスタートの情報を得るには、Lambda InsightsまたはAWS X-Rayのどちらかを使用する必要があります。

コールドスタート調査

Lambda Insights
AWS X-Ray

 

本記事ではLambda Insightsを使用したコールドスタートの調査方法を記載します。

なお、Lambda Insightsを有効化済みであることを前提に記載しますので、Lambda Insightsの有効化をしていない方は、以下の記事を参考に有効化くださいー

AWS LambdaでX-Rayを有効化する方法と無効化する方法
AWS Lambda で X-Rayの有効化と無効化の切り替えは簡単に行えます。X-Rayは有料ですので、パフォーマンスに問題発生時など調査が必要な時だけ有効化、不要な時は無効化した方がいいと思います。Lambda関数の実行数に応じて(トレースする数に応じて)料金も増えていくので、実行数が多い場合は要注意かと思います

また、AWS X-Rayを使用したコールドスタートの調査方法は以下の記事をご参照ください。

AWS LambdaでX-Ray使用時のX-Ray画面の見方
LambdaでX-Rayを使用すると、Service Mapでサービス全体の性能を見ることができます。トレースではリクエスト毎の性能を見ることができます。トレースではコールドスタートの情報を取得することも可能です。Lambda 関数コード内の処理を AWS X-Ray でトレースすることもできます。

それでは、Lambda Insightsを使用したコールドスタートの調査について記載していきます。

 

スポンサーリンク

コールドスータートの調査方法

Lambda Insightsを有効にすることによって出力されるパフォーマンスログから調査を行います。

ログは、CloudWatch->ログ->ロググループ->「/aws/lambda-insights」->Log insightsで表示とメニューをたどると確認できます

まずは、コールドスタートの有無について、確認する方法を記載します。

コールドスタートの有無について

Log insightsでパフォーマンスログを見ると「cold_start」という項目があります。

  • cold_start
    • 値が「1」の場合はコールドスタート
    • 値が「0」の場合はコールドスタートではない

上記のように読み取ることができます。

以下のクエリでコールドスタートの回数をカウントすることができます。

fields @timestamp, @message, @logStream, @log
| filter cold_start = 1
| stats count(cold_start)
| sort @timestamp desc
| limit 20

次はコールドスタートに要した時間について記載します。

コールドスタートに要した時間について

コールドスタートの有無の調査と同様にLog insightsでパフォーマンスログを検索して、確認することができます。

「init_duration」という項目がコールドスタートに要した時間になります。

以下のようなクエリで、コールドスタートに要した最大の時間を取得可能です。

まとめ

以下の2つを使って、コールドスタートの有無とコールドスタートに要した時間を求めることができましたー

使用したもの

パフォーマンスログ
Log insights
→Log insightsを使用してパフォーマンスログを検索することで、コールドスタートの情報を得られました!