高スループット Java アプリのウォームアップ
-
20-09-2019 - |
質問
最近、実際のリクエストの処理を開始する前にアプリをウォームアップする必要がある (高スループット要件を伴う) シナリオについて知りました。この背後にあるロジックは、JIT が魔法のようなパフォーマンスを発揮できるようにするためです。
これは Java アプリの標準ですか? それともメモリの多い (フットプリント) アプリで一般的に行われますか?
解決
その後、JITは非常にマイナーな問題です。最大の問題は、(移入)あなたが持っている必要がありますすべてのキャッシュ層をウォーミングアップされます。休止状態から移入されている、例えば ehcacheを領域>。 IO関連の操作は、CPUの内部で起こる何よりも遅く桁違いなので、それはです(あなたはフラクタルを計算されていない限り、それは次のようになります。)
他のヒント
質問は、あなたがの
?これを行うには、のあなたの方法の外に出るしたい場合には、あなたはWebアプリケーションをロールアウトした場合、あなたはそれを「温暖化」している間、あなたが逆効果である余分な負荷を、追加している、そして、すぐに住んでています。デスクトップアプリが起動するときに、同様のは本当です。温暖化にはポイントは、ユーザーがそれを使用してすぐに開始する予定されていない場合。それとも悪いことに、あなたはアプリを暖めている間に、ユーザが対話することができません。
あなたはWebアプリケーションを展開し、あなたはそれにあなたのロードバランサをポイントする前に、展開をテストした場合、、あなたはすでにサイド結果としてそれを温めてきました。
に加えて チェロヴィムの答え, ウォームアップが必要な問題は他にもいくつか考えられます。
- オブジェクトのインスタンス化 (遅延読み込み、シングルトンなど)。
- ヒープ割り当て (
Xms
あなたより小さいですXmx
).
OS もアプリケーションの動作に合わせて調整するので、OS 呼び出しもウォームアップ期間の影響を受けるのではないかと思います。
上記のほとんど (キャッシュの作成、オブジェクトの初期化) は Java に固有のものではありません。