すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:JVM サーバーからの GC ログの収集

最終更新日:May 29, 2025

Full-stack Observability アプリケーションにガベージコレクション(GC)ログを収集できます。 この方法では、Simple Log Service コンソールでログを表示できます。

重要

アプリケーションはメンテナンス中です。 サーバーから Application Real-Time Monitoring Service (ARMS) にメトリックを収集することをお勧めします。 詳細については、「ARMS」をご参照ください。

前提条件

  • Full-stack Observability インスタンスが作成されていること。 詳細については、「インスタンスの作成」をご参照ください。

  • Java プロセスに対して GC ロギングオプションが構成されており、GC ログが特定のファイルに収集されていること。 次の表に、オプションを示します。

    • JDK 8 オプション

    -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -Xloggc:gc-%p.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=100M 

    オプション

    必須

    説明

    -XX:+PrintGCDetails

    はい

    詳細な GC ログを表示します。

    -XX:+PrintGCDateStamps

    はい

    GC ログに日付タイムスタンプを追加します。

    このオプションを有効にすると、JVM は各 GC ログに日付と時刻の情報を追加します。 この情報は、GC ログの時間シーケンスを分析するために使用でき、GC の動作と効果を理解するのに役立ちます。

    ほとんどの場合、このオプションは -XX:+PrintGCDetails-XX:+PrintGCTimeStamps などの他の GC ロギングオプションと組み合わせて使用​​され、より詳細な GC ログを提供します。

    -XX:+PrintGCTimeStamps

    はい

    GC ログにタイムスタンプを追加します。

    このオプションを有効にすると、JVM は GC の開始時刻と終了時刻を含むタイムスタンプ情報を各 GC ログに追加します。 この情報は、GC の時間シーケンスとパフォーマンスを分析するために使用でき、アプリケーションの GC 動作を理解し、パフォーマンスを最適化するのに役立ちます。

    ほとんどの場合、このオプションは -XX:+PrintGCDetails-XX:+PrintGCDateStamps などの他の GC ロギングオプションと組み合わせて使用​​され、より詳細な GC ログを提供します。

    -Xloggc

    はい

    GC ログを特定のファイルに収集します。 フォーマット:-Xloggc:gc-%p.loggc-%p.log はファイルパスを指定します。

    JDK 8 では、-Xloggc オプションは有効であり、-Xloggc:gc-%p.log 形式で構成する必要があります。 ほとんどの場合、このオプションは -XX:+PrintGCDetails-XX:+PrintGCTimeStamps などの他の GC ロギングオプションと組み合わせて使用​​され、より詳細な GC ログを提供します。

    -XX:+UseGCLogFileRotation

    いいえ(推奨)

    GC ログファイルのローテーションを有効にします。

    このオプションを有効にすると、JVM は GC ログファイルを自動的にローテーションします。 ファイルのサイズが特定の値に達するか、特定の期間が経過すると、JVM は自動的にログファイルを作成し、以前のログファイルを保持します。 これにより、GC ログファイルが過度に大きくなり、大量のディスク容量を占有するのを防ぎます。 ログファイルのローテーション機能は、ログファイルを効率的に管理および分析するのに役立ちます。

    ほとんどの場合、このオプションは -XX:GCLogFileSize-XX:GCLogFileSize などの他の GC ロギングオプションと組み合わせて使用​​され、ログファイルのローテーション条件とポリシーを管理します。

    -XX:NumberOfGCLogFiles

    いいえ(推奨)

    ローテーション中に保持できる GC ログファイルの最大数を指定します。

    このオプションを構成すると、JVM は指定された数の GC ログファイルまで保持します。 ログファイルの数がこのオプションの値を超えると、最も古いログファイルが削除されます。 これにより、過剰なディスク使用を防ぎます。

    ほとんどの場合、このオプションは -XX:+UseGCLogFileRotation オプションと組み合わせて使用​​して、GC ログファイルのローテーションを管理します。

    -XX:GCLogFileSize

    いいえ(推奨)

    GC ログファイルの最大サイズを指定します。

    このオプションを構成すると、JVM はこのオプションの値に基づいて各 GC ログファイルのサイズを監視します。 ログファイルのサイズがこのオプションの値を超えると、JVM は自動的に新しいログファイルを作成し、以前のログファイルを保持します。 これにより、過剰なディスク使用を防ぎます。

    ほとんどの場合、このオプションは -XX:+UseGCLogFileRotation オプションと組み合わせて使用​​して、GC ログファイルのローテーションを管理します。

    • JDK 11 オプション

      JDK 11 では、-Xloggc を除いて、上記のオプションは使用できません。 JDK 11 では、Unified Logging と呼ばれる新しい GC ロギングシステムが導入されています。 -Xloggc: の代わりに -Xlog:gc*:file を使用できます。 このオプションを使用すると、ログの出力形式とレベルをきめ細かく管理できます。

      -Xlog:gc*:file=gc-%p-%t.log:time,pid:filecount=5,filesize=10M
      説明

      %t は時点を指定し、%p はプロセス ID を指定し、filecount はファイルをローテーションできる回数を指定し、filesize はファイルのサイズを指定します。

背景情報

Java アプリケーションのパフォーマンスに関連する問題が発生した場合、JVM GC ログを分析して問題のトラブルシューティングを行うことができます。 GC ログは、GC トリガーの原因、GC タイプ、GC の期間、収集されるオブジェクトの数など、GC に関する情報を提供します。 GC ログを分析することで、次の一般的な問題を特定して処理できます。

  1. メモリリーク:GC ログを分析することで、オブジェクトの作成と破棄のプロセス、およびヒープメモリ内でのオブジェクトの割り当てを取得できます。 特定のオブジェクトを使用した後、オブジェクトが解放されない場合、メモリリークが発生する可能性があります。 GC ログを分析することで、メモリリークが発生しているかどうかを確認し、メモリリークの原因を特定し、できるだけ早く問題に対処できます。

  2. 高いメモリ使用量:GC ログは、ヒープメモリ使用量とオブジェクト分布を含む、アプリケーションのメモリ使用量を示しています。 GC ログを分析することで、大量のメモリ領域を占有しているオブジェクトに基づいてメモリ使用量を削減できます。

  3. GC パフォーマンス関連の問題:GC ログは、GC トリガーの原因、GC の頻度、GC の期間など、GC に関する情報を提供します。 GC ログを分析することで、GC の頻度や GC の期間など、GC に関するパフォーマンス情報を取得できます。 GC の頻度が高いか、GC の期間が長い場合、アプリケーションのパフォーマンスに影響を与える可能性があります。 また、GC パフォーマンスに関連する問題の原因を特定し、GC ログを使用して問題に対処することもできます。

  4. GC ポリシーの選択:JVM は、Mark-Sweep、Copying、Mark-Compact など、複数の GC アルゴリズムを提供します。 GC ログの分析により、各 GC アルゴリズムのパフォーマンスを評価し、適切な GC ポリシーを選択できます。 これにより、アプリケーションのパフォーマンスと安定性が向上します。

データフロー

次の図は、GC ログのデータフローを示しています。

image.png

手順

  1. Simple Log Service コンソール にログオンします。

  2. [ログアプリケーション] セクションで、[インテリジェント O&M] タブをクリックします。 次に、[Full-stack Observability] をクリックします。

  3. [Simple Log Service Full-stack Observability] ページで、管理するインスタンスをクリックします。

  4. 左側のナビゲーションウィンドウで、[フルスタックモニタリング] をクリックします。

    インスタンスでパフォーマンスモニタリングを初めて使用する場合は、[有効化] をクリックします。

  5. 左側のナビゲーションウィンドウで、[データ収集] をクリックします。 [データインポート構成] ページで、[JVM モニタリング] セクションの [GC ログ分析] をオンにします。

    ホストモニタリングデータの Logtail 構成を初めて作成する場合は、スイッチをオンにして構成ページに移動します。 Logtail 構成を作成した場合は、创建 アイコンをクリックして構成ページに移動します。

  6. マシングループを作成して選択します。

    マシングループの作成方法の詳細については、「マシングループ」をご参照ください。

  7. [Logtail 構成] ステップで、パラメーターを構成し、[次へ] をクリックします。

    Logtail 構成の作成方法の詳細については、「Logtail 構成の管理」をご参照ください。

    設定を構成した後、Simple Log Service は、Metricstore などのアセットを自動的に作成します。 詳細については、「アセット」をご参照ください。

GC メトリック

重要

次の GC メトリックは、Simple Log Service の Scheduled SQL 機能を使用して生成されます。

GC メトリックは、時間と領域に基づいて分類されます。

  • 時間ベースの GC メトリック:各 GC サブフェーズの期間と GC フェーズの合計期間を指定します。

  • 領域ベースの GC メトリック:各 GC フェーズの前後の各領域のサイズと、各領域の領域昇格の変更を指定します。

時間

GC スレッドの CPU 時間 (GC_CPU_USED)

ラベル

説明

instance_id

インスタンス ID。

gc_type

GC タイプ。 例:G1、CMS、ZGC。

type

GC 期間のタイプ。 有効な値:

  • USER:ユーザー状態の時間。

  • SYS:カーネル状態の時間(I/O ブロック時間を含む)。

  • REAL:実際の実行時間。

GC 一時停止時間 (GC_PAUSE_TIME)

GC プロセス中、特定のスレッドは同時に実行され、アプリケーションには影響しません。 一時停止時間は、期間から同時実行時間を差し引くことによって計算されます。 GC の一時停止時間はアプリケーションに影響します。

ラベル

説明

instance_id

インスタンス ID。

gc_type

GC アルゴリズム。 有効な値:

  • Serial GC

  • Parallel GC

  • ZGC

  • Generational ZGC

  • Shenandoah GC

  • Generational Shenandoah GC

  • G1 GC

  • CMS GC

type

GC タイプ。 有効な値:

  • Young GC

  • Mixed GC

  • Full GC

  • Concurrent Mark Cycle

  • Concurrent Undo Cycle

  • CMS

  • Garbage Collection

GC サブフェーズ時間 (GC_SUBPHASE_TIME)

ラベル

説明

instance_id

インスタンス ID。

gc_type

GC アルゴリズム。 有効な値:

  • Serial GC

  • Parallel GC

  • ZGC

  • Generational ZGC

  • Shenandoah GC

  • Generational Shenandoah GC

  • G1 GC

  • CMS GC

type

GC タイプ。 有効な値:

  • Young GC

  • Mixed GC

  • Full GC

  • Concurrent Mark Cycle

  • Concurrent Undo Cycle

  • CMS

  • Garbage Collection

subphase

GC サブフェーズの名前。

  • CMS GC の重要なフェーズ

    • Concurrent Mark

    • Final Remark

  • CMS GC のすべてのフェーズ

    • Initial Mark

    • Concurrent Preclean

    • Concurrent Abortable preclean

    • Concurrent Mark

    • Final Remark

    • Concurrent Sweep

    • Concurrent Reset

    • Concurrent Mode Interrupted

    • Concurrent Mode Failure

    • Rescan

    • Class unloading

    • Scrub Symbol Table

    • Scrub String Table

  • G1 の重要なフェーズ

    • Concurrent Mark

    • Concurrent Mark From Roots

    • Pause Remark

    • Object Copy

  • G1 GC のすべてのフェーズ

    • Concurrent Clear Claimed Marks

    • Root Region Scanning

    • Concurrent Mark From Roots

    • Concurrent Preclean

    • Concurrent Mark

    • Concurrent Mark Reset For Overflow

    • Pause Remark

    • Concurrent Rebuild Remembered Sets

    • Pause Cleanup

    • Concurrent Cleanup

    • Finalize Marking

    • Class Unloading

    • Reference Processing

    • Concurrent Mark Abort

    • Mark Live Objects

    • Prepare for Compaction

    • Adjust Pointers

    • Compact Heap

    • Ext Root Scanning

    • Update Remember Set

    • Scan Remember Set

    • Code Root Scanning

    • Object Copy

    • Termination

    • Code Root Fixup

    • Code Root Purge

    • Clear Card Table

    • Choose Collection Set

    • Evacuation Failure

    • Ref Enq

    • Redirty Cards

    • Humongous Register

    • Humongous Reclaim

    • Free Collection Set

GC 時間 (GC_COST_TIME)

ラベル

説明

instance_id

インスタンス ID。

gc_type

GC タイプ。 有効な値:

  • Serial GC

  • Parallel GC

  • ZGC

  • Generational ZGC

  • Shenandoah GC

  • Generational Shenandoah GC

  • G1 GC

  • CMS GC

領域

GC 前のメモリ (BEFORE_GC_REGION_SIZE)

ラベル

説明

instance_id

インスタンス ID

gc_type

GC タイプ。

  • Serial GC

  • Parallel GC

  • ZGC

  • Generational ZGC

  • Shenandoah GC

  • Generational Shenandoah GC

  • G1 GC

  • CMS GC

type

領域名。

  • Young

  • Old

  • Humongous

  • Heap

  • Metaspace

GC 後のメモリ (AFTER_GC_REGION_SIZE)

ラベル

説明

instance_id

インスタンス ID。

gc_type

GC タイプ。

  • Serial GC

  • Parallel GC

  • ZGC

  • Generational ZGC

  • Shenandoah GC

  • Generational Shenandoah GC

  • G1 GC

  • CMS GC

type

領域名。

  • Young

  • Old

  • Humongous

  • Heap

  • Metaspace

昇格サイズ (GC_PROMOTION)

ラベル

説明

インスタンス ID

インスタンス ID です。

gc_type

GC の種類。

  • Serial GC

  • Parallel GC

  • ZGC

  • Generational ZGC

  • Shenandoah GC

  • Generational Shenandoah GC

  • G1 GC

  • CMS GC

手順 3: アプリケーションをテストする

詳細については、「ダッシュボードを表示する」をご参照ください。