2017-09-14 1 views
2

AWSラムダはJavaで書かれており、通常は約200ミリ秒で完了します。場合によっては、5秒後にタイムアウトします(設定されたタイムアウト値)。AWSラムダタイムアウト(時にはサブ秒実行)

私は、コンテナの設定のために時々追加された遅延があることを理解しています(ただし、実行時間に影響するかどうかはわかりません)。私はいくつかのデバッグログを追加しました。ちょうどのコードがで動作しているようです。

たとえば、特に目に見えるログエントリでは、HttpClients.createDefaultへのコールが200ms未満(ラムダが200ms未満で実行されるという事実に基づいて)よりも時間がかかりますが、タイムアウトが発生すると、 3秒。

2017-09-14 16:31:28  DEBUG Helper:Creating HTTP Client 
2017-09-14 16:31:31  DEBUG Helper:Executing request 

私は何かを誤解していない限り、コンテナの初期化のために任意の待ち時間がすでに起こっているだろうと同じように、それはそうです。コード実行がある実行から次の実行までのスピードに劇的な違いを持っ​​ていてはならないと仮定して間違っていますか?それとも私たちが期待するべきことですか?

答えて

0

あなたの機能を常に暖かく保ち、違いがあるかどうかを確認してください。

タイムアウトが本当にコンテナのウォーミングアップに起因する場合は、ウォームアップを保つことは、これらのタイムアウトの頻度を減らすのに大きく役立ちます。変更を配備するときでもまだコールドスタートがありますが、少なくとも予測可能です。

https://read.acloud.guru/how-to-keep-your-lambda-functions-warm-9d7e1aa6e2f0

1

新しいコンテナを設定するか、冷えた容器を交換するには、いくつかの時間がかかります。どちらもあなたの時間とは対照的です。コンソールに表示される時間は、あなたが請求された時間です。

Amazonはコンテナのプロビジョニングに料金を請求しないと仮定しますが、ランタイムが開始されるとすぐにタイマーに確実に当たってしまいます。あなたは、SDK/JDKが初期化され、そのクラスをロードする時間を支払う可能性が高いです。彼らは確かに、コンテナを運営する運営体制の開始のために私たちに請求していません。

simple Java Lambdaを2回実行すると、新しいインスタンスと再利用されたインスタンスの異なる時間が表示されます。最初の値は374.58 msで、2番目の値は0.89 msです。その後、400100 msの請求期間が表示されます。 2番目の場合、コンテナは再利用されました。 @dashmugによって既に指摘されているようにコンテナを暖かく保つことができますが、AWSはコンテナをリサイクルすることがあります。また、負荷が増減すると新しいコンテナが生成されます。ブログHow long does AWS Lambda keep your idle functions around before a cold start?How does language, memory and package size affect cold starts of AWS Lambda?も一見価値があるかもしれません。外部ライブラリを組み込むと、時間が増えます。あなたがそのブログを見ると、Javaの場合、より小さなメモリ割り当てが定期的に2〜4秒を超えることがわかります。

あなたはおそらく、あなたのタイムアウトを増やすだけのアプリケーションが提供するログを見て、実際のタイムアウトイベントのためだけでなくSTARTENDREPORTのエントリを見てはならないこれらの時間を見てみます。実行中の各Lambdaコンテナインスタンスは、独自のログストリームを作成するようです。彼らが頻繁に呼び出されない場合、ラムダを暖かく保つことを検討してください。 Javaベースのアプリケーションの場合

05:57:20 START RequestId: bc2e7237-99da-11e7-919d-0bd21baa5a3d Version: $LATEST 
05:57:20 Hello from Lambda com.udoheld.aws.lambda.HelloLogSimple. 
05:57:20 END RequestId: bc2e7237-99da-11e7-919d-0bd21baa5a3d 
05:57:20 REPORT RequestId: bc2e7237-99da-11e7-919d-0bd21baa5a3d Duration: 374.58 ms Billed Duration: 400 ms Memory Size: 128 MB Max Memory Used: 44 MB
05:58:01 START RequestId: d534155b-99da-11e7-8898-2dcaeed855d3 Version: $LATEST 
05:58:01 Hello from Lambda com.udoheld.aws.lambda.HelloLogSimple. 
05:58:01 END RequestId: d534155b-99da-11e7-8898-2dcaeed855d3 
05:58:01 REPORT RequestId: d534155b-99da-11e7-8898-2dcaeed855d3 Duration: 0.89 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 44 MB
0

あなたはそれがJVM権利だ知っているようにウォームアップ期間がもっとあります。ウォーミングアップ時間が短いため、NodeJSまたはPythonを使用する方がよいでしょう。このような方法でテクノロジースタックを切り替えることができない場合は、単にコンテナを暖かい状態に保つか、実行時間を短縮するメモリを増やしてください。ラムダCPU割り当てはより大きなメモリの方が多くなります。

関連する問題