2016-03-28 13 views
2

AWS LambdaのnodejsコードをいくつかのAPI Gatewayエンドポイントから呼び寄せてきました。 APIゲートウェイの呼び出しがなくても一定時間が経過すると、次のAPIゲートウェイ要求がタイムアウトすることに気付きました。関数がタイムアウトしたという標準的なラムダエラーメッセージが出ます。しかし、その後のラムダのトリガーとなるHTTPリクエストは正常に動作します。AWSラムダとAPIゲートウェイ - アイドル状態になります。最初の要求で「起きる」/応答がないようにする必要がありますか?

表面的には、何かが「アイドル」モードになっているように見え、API Gateway-Lambdaリクエストが正常に機能するには充電が必要です。私は物事を非アイドル状態に保つためにwget cronを設定することを検討しましたが、本当の修正があり、どうしたら起こっているのかをもっとよく理解できますか?

+0

どれがタイムアウトしていますか?タイムアウトはどれくらいですか? (はい、ラムダ関数の次の呼び出しを待っているバックグラウンドで引き続き実行されるリソースは、実際にはアクティビティがない約10〜15分以内に割り当てが解除されますが、その結果、それらを生かしておくものはありません。) –

+0

私もこれに気付きました。非アクティブにすると、次のコールには約12秒かかります。さもなければ私は100と900ミリ秒の間になる – Guus

答えて

7

ラムダは、ある期間アクティブにしておき、(あなたが気づいたように)一定期間休止した後にそのワーカーを削除します。以下はour forumsに掲載の提案のセットのコピーです:

いくつかの提案:

  1. 「暖かい」あなたのラムダ関数を保管してください。頻繁に呼び出されない場合は、ラムダが要求を処理するために リソースを割り当てる必要があるため、オーバーヘッドの「コールドスタート」コストが発生します。詳細については、この記事を参照してください。
  2. ロールベースではなく、リソースベースのアクセス許可でラムダ関数を呼び出します。これは、APIゲートウェイ がSTSにassumeRole()要求を行う必要があるオーバーヘッドを回避するためです。リソースベースの 呼び出しは、コンソールに設定した場合のデフォルトです。
  3. 必要に応じて、APIのキャッシングを有効にすることを検討してください。
  4. あなたのAPIは、マッピングテンプレートを使用してリクエストまたはレスポンスを変換していますか?これは、明らかに、変換の複雑さのために、 でオーバーヘッド線形を招くことになります。

ノートは、#1は、実際にはあなたのために働く他のオプションの最後仮定なしとして使用する必要があります。

関連する問題