最初のリクエストが遅い理由、コールドスタート
サーバーレス関数はしばらく呼び出されないと実行環境が終了し、次のリクエストが来るとランタイムの初期化からやり直します。この過程をコールドスタートと呼び、ユーザーが体感する応答遅延の主な原因になります。このツールはランタイム、メモリサイズ、パッケージサイズを入力すると、予想コールドスタート時間を推定します。
ランタイム別の基本初期化時間
| ランタイム | 基本時間 |
|---|---|
| Go | 50ms |
| Node.js | 150ms |
| Python | 200ms |
| .NET | 400ms |
| Java | 800ms |
コールドスタートを減らす方法
メモリを増やすとCPUリソースも合わせて増えるため、初期化が速くなる傾向があります。それ以外にも、プロビジョニング済み同時実行で関数を常時ウォームアップ状態に保つ、デプロイパッケージを軽量化する、Goのように初期化が速いコンパイル言語を選ぶことも効果的な対策です。
よくある質問
コールドスタートはなぜ発生しますか?
関数が一定時間呼び出されないと実行環境が終了し、次のリクエスト時にランタイムの初期化からやり直すため遅延が発生します。
メモリを増やすとコールドスタートは速くなりますか?
はい、クラウドプロバイダーはメモリ設定に比例してCPUリソースも割り当てるため、メモリを増やすと初期化が速くなる傾向があります。
コールドスタートを減らす方法はありますか?
プロビジョニング済み同時実行(Provisioned Concurrency)、パッケージの軽量化、Goのようなコンパイル言語の利用が代表的な対策です。