データのフィルタリング時に Spring アプリケーションのパフォーマンスが低下する

データのフィルタリング時に Spring アプリケーションのパフォーマンスが低下する
  • 私は App Engine B2 で Spring アプリケーションを作成しましたが、ログを見ると、アプリケーションがデータ フィルタリングを完了するのに 1 秒かかることがわかります (アプリケーションの起動後)。ローカル マシンでは 10 ミリ秒かかります。
  • データ サイズは非常に小さく、ロジックもそれほど複雑ではありません。プロジェクトはまだ始まったばかりです。

私の質問は、アプリ エンジン インスタンスに何らかのリソースなどが不足している可能性はありますか? 現在はデフォルトを使用しているため、何らかの構成または JAVA オプションが不足している可能性があります。同様のパフォーマンスの問題に直面したことがある人もいるかもしれません。

アップデート。 再度、B1、B2、B3、B4 インスタンスを使用しようとしました。結果は同じです。アプリケーションのリソースが本当に少ないように感じます。

Compute Engine VM を作成すると、問題は解決しました。仮想マシンでは、同じアプリケーションで Docker イメージを実行しています。これで正常に動作します。レスポンスは素晴らしいです。

App Engine を使いたいのですが、まだ原因がわかりません。Google チュートリアルの app.yaml のデフォルト設定をすべて使用し、追加オプションは使用していません。

アップデート2。 さまざまなオプションで App Engine Flex 環境を使用しようとしました。それでも結果は同じです。同じ API をもっと多く呼び出すと、30 秒の応答が 28 から 25 に変わるため、違いがわかるかもしれません。したがって、私の結論は、App Engine (私の理解では) は、JAVA の複雑な CPU ピーク操作 (FILTER、SORT ENTITY) には適していないということです。Compute Engine では、私のソリューションは問題なく機能します。次に、GKE で試してみましたが、そこでも問題なく機能し、30 秒 (起動オーバーヘッドなし) から応答が 200 ミリ秒に短縮されました。GCE または GKE では、最も低いリソース ランクの VM を使用します。

答え1

インスタンスクラスを、計算操作にさらに効率的なものに変更することで(例えば、B4(あなたの場合はCPU制限を高く設定する)と、確かにその点ではアプリケーションが高速化しますが、コストがかかる

インスタンス クラスをアップグレードする前に、アプリケーションの速度を向上させるためにプログラムで何も実行できないようにすることをお勧めします。この場合、価格が 2 倍になる可能性があります。

関連情報