クイックチューンJVM 5優れたマニュアル:ParNewコレクター+ CMSコレクタ製品のケーススタディ(応答時間優先)

サーバー

デュアルコア、4個のコア、16Gメモリ

[root@alish2-cassandra-01 ~]# cat /proc/cpuinfo | grep "cpu cores"
cpu cores       : 2
cpu cores       : 2

簡単な式

同時コレクターの優先順位の応答時間は、主に、システムの応答時間を確保するために、一時停止時間ガベージコレクションを減らします。アプリケーションサーバー、通信、その他のフィールドに適しています。

  1. ParNewコレクター

    ParNewコレクタはシリアルコレクターのマルチスレッド版で、コレクターの新世代のための選択のサーバーモードで実行している仮想マシンの多くは、シリアルに加えて、それだけではCMSコレクタで動作することができます。

  2. CMSコレクタ

    CMS、同時ローポーズコレクターの完全な名前は、新しいGCアルゴリズムはそれ以降のバージョンのJDK 1.4で導入された、さらにシーンのために、その主な需要のJDK5とJDK6で改善された応答時間の重要性は、スループット要件よりも大きいです、ガベージコレクションスレッドとアプリケーションスレッドの共有プロセッサリソース、およびアプリケーションオブジェクトを耐えることができ、より長いライフサイクルのアプリケーションが存在しています。CMSは、リサイクルの古い世代である古い世代の回復のために使用され、目標は、使用してアプリケーションスレッド同時実行ガベージコレクションのスレッドは、古い世代を削除マークする、発生し、中断時間の使用を最小限にFullGCのリスクを軽減することです。
    :CMSはこのように一時停止がないわけではないが、短い休止で二回アルゴリズムを整理するシリアルタグを一時停止長い置き換えるために、その収集サイクル
    -初期マーク(CMS-初期マーク) > 同時マーク(CMS-同時マーク) - >ラベル変更(CMS-発言) - >同時クリア(CMS-同時スイープ) - > 次のトリガCMS(CMS-同時リセット)を待って同時リセット状態
    1,3二つのステップがすべて中断する必要がありますアプリケーションスレッド。ルートオブジェクトからの最初のポーズスタートマーク生きているオブジェクトは、この段階では、最初のマークと呼ばれ、2番目は、並行マークした後、一時停止され、すべてのアプリケーションスレッドを中断し、対象に再マークするために不足しているコンカレントマーキング段階(並行マークのステージの終わりを更新されたオブジェクトの状態リード)。最初のポーズは、比較的短くなり、通常、第二の休止が長くなり、並列マークのこの段階で発言。
    コンカレントマーク、コンカレントはクリア、いわゆる同時性によって複雑に舞台をリセットし、同時に実行ガベージコレクションのスレッドとアプリケーションスレッドの1つまたは複数を指し、あなたは一つの処理が複数ある場合は、ガベージコレクタスレッドは、アプリケーションを中断しません。デバイスは、その後、スレッドが異なるプロセッサ上で同時収集し、アプリケーションのスレッドを実行しますが、そのような費用はスループットアプリケーションを減らすことは明らかです。平行備考ステージは、並列ガベージコレクションプロセスオフの数を開始するために、すべてのアプリケーションの停止を意味し、これで、アプリケーションスレッドが中断されます。

公式

($ TOMCAT_HOME / binに/ catalina.sh)

export JAVA_OPTS="-server -Xmx10240m -Xms10240m -Xmn3840m -XX:PermSize=256m

-XX:MaxPermSize=256m -Denv=denalicnprod

-XX:SurvivorRatio=8  -XX:PretenureSizeThreshold=1048576

-XX:+DisableExplicitGC  

-XX:+UseParNewGC  -XX:ParallelGCThreads=10

-XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled

-XX:+CMSScavengeBeforeRemark -XX:ParallelCMSThreads=10

-XX:CMSInitiatingOccupancyFraction=70

-XX:+UseCMSInitiatingOccupancyOnly

-XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0

-XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled

-XX:+UseFastAccessorMethods

-XX:LargePageSizeInBytes=128M

-XX:SoftRefLRUPolicyMSPerMB=0

-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC

-XX:+PrintGCApplicationStoppedTime 

-XX:+PrintGCDateStamps -Xloggc:gc.log -verbose:gc"

解析式

参 数 意味
-サーバ とき、複数のCPU良好なパフォーマンス、JDKのサーバーバージョンを有効にするには、最初のパラメータとしては、必ず
-Xms Javaヒープの初期サイズ。デフォルトでは1/64の物理メモリです。この値は、ガベージコレクションが完了REALLOCATEメモリを避けるために、同じ-Xmx、各JVMを設定することができます。
-Xmx Javaヒープの最大。勧告は、物理メモリの80%に設定されています。物理メモリを超えません。
-Xmn NewSizeパラメータと-XX::若い世代のサイズは、一般的に-XXと同等〜3/8 Xmxの2/8を設定し、提供されMaxNewSize。
-XX:PermSizeを デフォルトの64Mを設定永続メモリ格納領域の初期サイズ
-XX:MaxPermSizeを 永久保存領域の設定のメモリの最大サイズは、デフォルトは64Mであります
-Denv Tomcatを実行するプロジェクトを指定します
-XX:SurvivorRatio 図8に示すように、トータルのサバイバー若い世代領域1/10:領域エデンサバイバー領域の大きさの比は、8に設定されている、サバイバーエデンゾーンを有する2つの領域の比は2
-XX:PretenureSizeThreshold 旧世代のプロモーションオブジェクトサイズ。デフォルトでは、例えば、1048576(1M)に設定され、さらに1M以上の目的は、直接古い世代に、ゾーン分散をエデンず、0です。
-XX:+ DisableExplicitGC 閉じるにSystem.gc()
-XX:+ UseParNewGC 若者を代表して同時コレクションを設定します。CMSを収集し、同時に使用することができます。
-XX:ParallelGCThreads
-XX:+ UseConcMarkSweepGCを 古いセットが同時コレクションを取りました。この構成をテストした後、-XX:NewRatio = 4の構成は失敗します。したがって、若い世代のサイズは、好ましくは、-Xmnが設けられています。
-XX:+ CMSParallelRemarkEnabled オープンパラレル発言
-XX:+ CMSScavengeBeforeRemark このパラメータは、非常に重要であり、それはCMSの発言を実行する前にyoungGCたら意味、効果的に時間の発言を低減することができます
-XX:ParallelCMSThreads あなたが明示的に-XXで設定する必要がある場合は、回復スレッドの数は、CMSは、デフォルト(ParallelGCThreads + 3)/ 4)で有効になっています。若い世代を収集するための並列スレッドの数ですParallelGCThreadsセットParallelCMSThreads = 20、
-XX:CMSInitiatingOccupancyFraction CMSは、ごみの収集を始めとしてCMSに70%を使用した後
-XX:+ UseCMSInitiatingOccupancyOnly 手動で使用するCMSの初期定義は、収集を開始した定義
-XX:+ UseCMSCompactAtFullCollection 旧世代のオープン圧縮。これは、パフォーマンスに影響を与えるかもしれないが、メモリの断片化を解消することができます。
-XX:CMSFullGCsBeforeCompaction メモリ空間の同時収集整理、圧縮しないので、作業効率を低下させるように、それは、操作の期間後の「破片」を持つことになります。このパラメータは、仕上げ、後の時代FullGCメモリ空間圧縮を実行するように設定されています。
-XX:+ CMSPermGenSweepingEnabled フルGCのペルミ地方フル原因を避けるためには、CMSのリサイクルオプションペルミ地方を開くことをお勧めします
-XX:+ CMSClassUnloadingEnabled
-XX:+ UseFastAccessorMethods 元の型の高速最適化
-XX:LargePageSizeInBytes メモリー・ページ・サイズがあまりにも高く設定することはできません、それはパーマの大きさに影響を与えます
-XX:SoftRefLRUPolicyMSPerMB 最後の生き0ミリ秒後にアクセスされるオブジェクトの「ソフト参照」(デフォルトは1秒です)。
-XX:+ PrintGCDetails 新しいオブジェクトのメモリのサイズに生成され、時間のかかるを含むレコード詳細GCランタイムデータ、
-XX:+ PrintGCTimeStamps 印刷ガベージコレクションのタイムスタンプ
-XX:+ PrintHeapAtGC スタックの詳細については、前とGCを印刷した後、
-XX:+ PrintGCApplicationStoppedTime 印刷ガベージコレクション期間中に中断プログラムは、上記と混合することができます
-XX:+ PrintGCDateStamps 之前打印gc日志的时候使用是:-XX:+PrintGCTimeStamps,这个选项记录的是jvm启动时间为起点的相对时间,可读性较差,不利于定位问题,使用PrintGCDateStamps记录的是系统时间,更humanreadable
-Xloggc 与上面几个配合使用,把相关日志信息记录到文件以便分析
-verbose:gc 记录 GC 运行以及运行时间,一般用来查看 GC 是否是应用的瓶颈

おすすめ

転載: blog.51cto.com/14309075/2415284