0

私はAWSラムダ関数を作成するためにnodejs(バージョン4.4)でサーバーレスフレームワークを使用しています。ラムダ実行のデフォルトのタイムアウトは6秒です。私はORMの続編を使用してmysqlデータベースに接続しています。 実行のタイムアウトがのようなエラーが表示されます。場合によっては、このエラーでもコードが正常に動作することがあります。しかし、このタイムアウトエラーの後には何も動作しないことがあります。私にとって本当に難しいのは、このタイムアウトから意味をなさないものです。私はタイムアウトを増やすことは、より多くの料金が発生する恐れがあります。AWS Lambdaが6秒でタイムアウトする

+1

設定時間ではなく、実行時間にのみ課金されます。時間を増やし、それが役立つかどうかを確認してください。 – Kannaiyan

+1

問題がラムダまたはコードであるかどうかを確認するために、わずかな時間だけそれを増やすことができます。それを1日10秒とすると、その行動を観察してください。まだタイムアウトがある場合は、5分に増やし、再度観察します。 – hjpotter92

+0

MySQLの接続/クエリに時間がかかる可能性があります。タイムアウトを増やそうとする前に、コードを一度確認してください。最適化が行われているかどうかを確認してください。何もない場合は、何も残しておらずタイムアウトを増やす必要があります。ラムダ関数の実行時間は決定論的でなければなりません。 –

答えて

2

「実行がタイムアウトしました」のようなエラーが表示されている場合は、おそらくタイムアウトがあまりにも低いLambdasの実行を切断している可能性があります。

これにはいくつかの理由があるかもしれません:

  • コンテナの初期化が遅くなることがあり、これが唯一のコンテナの最初の呼び出しで発生します。メモリの設定が不十分でライブラリがたくさんロードされている場合は、かなりの時間がかかることがあります(通常、ノードに問題はないはずです)
  • データベースへの接続が遅い可能性があります
  • データベース接続が古くなってタイムアウトにつながる可能性があります。
  • データベースのクエリが遅くなることがあります。

一時的にLambdaにログを追加してタイムアウトを長くして、実際に何がかかるかを把握する必要があります。すでに重いLambdaユーザーでなければ、月に400.000 free GB-secondsを使い果たしてしまう可能性は低いです。ラムダを128 MBで稼働させると、これは月当たり3.200.000秒/ 1日あたり103.225秒/ 28.5時間/日に相当します。より高いメモリ設定でもテストしてみてください。場合によっては、消費されたGB /秒の合計を減らすことさえできます。

他の人はすでに実際に使用された時間だけを支払っていると指摘していますので、ラムダがタイムアウトよりも速く終了した場合、消費された実際の時間(100ミリ秒単位で)を支払うだけです。