aws lambda(java)と統合されたaws apiゲートウェイを使用しますが、このアプローチでは重大な問題が発生しています。サーバーを取り除き、あなたのアプリを箱から出してしまうというコンセプトは本当に素晴らしいですが、私が直面している問題はここにあります。私のラムダは2つの単純なことをしています - クライアントから受け取ったペイロードを検証し、それを別のラムダからのさらなる処理のためにキネシスストリームに送ります(なぜ私はストリームに直接送らないのですか?論理を分離して抽象レイヤーを持たせ、クライアントに無効なデータを送信していることを伝えることができます。AWSラムダパフォーマンスの問題
ラムダIの実装では、スプリングDIを統合しました。ここまでは順調ですね。私はパフォーマンステストを始めました。私は50人の同時ユーザーをシミュレートして、リクエスト間に5秒の間隔でそれぞれ4リクエストを作成しました。何が起こったのですか?ラムダのコールドスタートでは、春のアプリケーションのコンテキストを初期化しますが、ラムダが起動していないときに同時に多くのリクエストがあると、奇妙なことが起きているようです。コンテキストが初期化された時間のスクリーンショットです。我々はスクリーンショットから見ることができますどのような
コンテキストを初期化するための時間は大きな違いがあるということです。何が起こったかについての私の仮定は、非常に多くのリクエストが受信され、「アクティブな」ラムダがない場合、それらのすべてのラムダコンテナを初期化し、同時にそれらのいくつかを「ブロック」する(大きな時間を持つもの既に始まった他のものが準備が整うまで)。だから、それは同時に開始することができますコンテナのいくつかの内部制限があります。問題は、トラフィックが均等に分散されていない場合、時々発生し、一部の要求がタイムアウトすることです。私たちはこれが起こらないようにしています。
次に、私の考えは「OKです。初期化は重く、単純な古いJavaオブジェクトの初期化を行いましょう」ということで、スプリングコンテナなしでいくつかのテストを行うことでした。そして、不幸にも同じことが起こりました(要求の一部に対して3秒コンテナの初期化が行われた可能性があります)。ここでは、テストデータのより詳細なスクリーンショットです:
だから私は、(建設から終わりまで)全体ラムダ実行時間をログに記録キネシスクライアントの初期化と、実際には、ストリームへのデータの送信しますこれらはラムダで最も重い操作です。私たちはまだ18年代のこれらの大きな時間を持っていますが、興味深いのは時間が何とか比例しているということです。したがって、ラムダ全体が18秒かかる場合、クライアントの初期化は約7-8秒、ストリームへのデータの送信は6-7秒、ラムダの残りの操作は4-5秒です。一方、小さな時間(既に開始されたラムダを再利用することを意味する)の1つ、すなわち、 820msでは、キネシスクライアントの初期化には100ms、データ送信には340ms、検証には400msかかります。だから、これはいくつかの限界のために内部的にいくつかの睡眠をとる考えに再び私をプッシュする。次のスクリーンショットは、ラムダがすでに開始されたときの要求の次のラウンドに何が起こっているかを示している:
だから我々はこの大きな時間を持っていない、はい、我々はまだいくつかの中でいくつかの比較的大きなデルタを持っています(私にとっても奇妙な)要求の、しかし事はずっと良く見えます。
実際に何が起こっているのかを知っている人から明確になるように探しています。これは、無制限の可能性があるため、クラウドを使用している深刻なアプリケーションにとっては適切な動作ではないからです。
そして、別の質問は、地域内のアカウント内のすべてのラムダでラムダ-200の同時呼び出しの別の制限に関連しています。私にとっては、これは大量のトラフィックを伴う大きなアプリケーションの大きな制限です。だから私のビジネスケース(私は未来を知らない)は多かれ少なかれ火災であり、その要求を忘れる。そして、ゲートウェイがストリームに直接データを送信し、もう一方のラムダが検証とそれ以上の処理を処理する方法でロジックを変更することを考え始めています。はい、私は現時点では必要ない現在の抽象化を失っていますが、私はアプリケーションの可用性を何度も増やしています。どう思いますか? 18Sへ
私が提供した時間は私のコードで(あなたが仮定することができるように)計算されるので、ハンドラオブジェクトが初期化された時から最悪の場合には18秒コード実行全体が遅くなります。キネシスプット操作は、一部の呼び出しで100〜200ミリ秒と比較して6〜7秒です。コードは実行されていますが、速度は遅くなります。限界の増加に関しては、彼らがそのような質問に迅速に反応することを知ることは良いことでした。 –