6

VMware ESX などのハイパーバイザーで Java サーバーを実行すると、Java ヒープにどのような影響がありますか?

  • JVM ヒープへのアクセスは、OS/ハイパーバイザーの観点からランダムです
  • ゲスト OS やハイパーバイザーでは、ランダムにアクセスされるメモリを最適化することは困難です。
  • この場合、ハイパーバイザーは JVM ヒープ内の未使用のページを検出できますか?

Java サーバー アプリケーションの従来の知恵では、必要に応じてヒープのサイズを動的に変更するのではなく、JVM の起動時にすべてのヒープを割り当てるとパフォーマンスが向上します。つまり、ヒープ サイズを 1GB に設定すると、Java プロセスは 1GB の連続した仮想アドレス空間 (+ バイナリに必要なもの) を取得し、他のアプリケーションでは使用できなくなります。

VMware は、このヒープの一部が実際に使用されていないことを検出できるほどスマートですか? これは GC のパフォーマンスにどのように影響しますか? VMware でヒープのサイズを動的に変更できるようにした方がよいでしょうか? VMware ゲストに最適な GC 戦略はどれですか?

また、仮想化環境で JVM ヒープを調整するためのガイドラインを教えてくれる人はいますか?

4

2 に答える 2

5

私の質問に関連:

以下は、VMware ゲストで Java を実行する際の考慮事項の概要を説明した PDF です:リンク テキスト

于 2009-01-14T19:35:24.830 に答える
2

この場合、Reservation = OS vRAM +JVM+ヒープサイズであることを確認してください。

一方、VMwareKBサイトからの一般的な推奨事項は次のとおりです。

仮想マシンのメモリのサイズを変更して、Javaヒープ、Java仮想マシンのコードとスタックに必要なその他のメモリ、およびゲストオペレーティングシステムからのメモリを必要とするその他の同時実行プロセスに十分なスペースを残します。

VMware Infrastructure Clientのメモリ予約値を、仮想マシンのメモリのサイズに設定します。あらゆるタイプのメモリスワッピング(物理または仮想)は、特にガベージコレクションのJVMヒープのパフォーマンスに悪影響を及ぼします。

同じ負荷で異なる時間に異なる数の仮想CPUで構成された仮想マシンをテストすることにより、Javaアプリケーションをホストする仮想マシンに最適な仮想CPUの数を決定します。

JVMで複数のガベージコレクタスレッドを使用している場合は、それらのスレッドの数を、仮想マシンで構成されている仮想CPUの数と一致させます。

監視と負荷分散を容易にするために、仮想マシンごとに1つのJVMプロセスを使用します。

ESX Serverがオーバーコミットされている場合は、メモリが最適に管理されるように、バルーンドライバーが仮想マシン内で実行されていることを確認してください。

于 2010-11-23T04:19:46.540 に答える