2

次のシナリオでは、GCをどのように調整する必要がありますか(たとえば、コレクターのタイプ、ヒープの最小/最大サイズ、新/旧世代のサイズ、サバイバーに対するエデンの比率など)。(Sun JDK 6を使用しており、使用可能なメモリは1GBです)。

1)Tomcatを実行しているマスターマシンは、Webアプリを実行して、マスターの下にあるさまざまなノードマシンのステータスを表示します。

2)ノードステータスメッセージには、CPU、メモリ、IO使用量などが含まれます。通常のメッセージサイズは1KBです

3)ノードは1秒あたり3つのそのようなメッセージをマスターに送信し、マスターにはその下に10のノードがあります

4)マスターは過去1時間のステータスデータをメモリに保持する必要があるため、マスターがメモリに保持する必要のあるステータスデータの合計は次のようになります。3kb* 3600 * 10 = 108MB

5)マスターはもちろん、他のタスクのためにメモリを必要とするため、JVMは最大0.5 GBを取得できますが、それ以上は取得できません。

私の具体的な質問は、より大きな新世代を保持する場合、これらのオブジェクトは少なくとも1時間は存続するため、多くのコピーが発生することです。古い世代を大きくしておくと、マイナーなコレクションがたくさん発生するので、どうすればよいですか?

4

2 に答える 2

4

自分で測定してください!

JVisualVM を Tomcat プロセスに接続し、さまざまな負荷の下での動作を確認します。ほとんどの場合、Visual GC プラグインが非常に便利であることがわかります。

インスピレーションについては、 http://techblog.zabuchy.net/2012/monitoring-of-tomcat-with-visualvm-and-visualgc/を参照してください。

于 2012-06-01T08:13:32.180 に答える
1

実際のパフォーマンスの問題を特定するまで、GC のチューニングについて考える必要はありません。デフォルトはおそらく問題なく動作します。

基本的に、これはかなり GC ライトなアプリケーションです。1 秒あたりわずか 100k 程度のメモリ割り当てと、約 100MB のワーキング セットについて話しています。これは、最新のサーバーで処理するのは非常に簡単です。

于 2012-06-01T08:42:50.777 に答える