Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JVM(JavaVM)の性能分析者観点で探るInstanaの可能性

 JVM(JavaVM)の性能分析者観点で探るInstanaの可能性

12月12日開催のInstanauts_jp ( Instanaユーザー会)のセッション:
角さん/みずほリサーチ&テクノロジーズによる JVM(JavaVM)の性能分析者観点で探るInstanaの可能性の資料になります。

Instanauts_jp

December 16, 2024
Tweet

More Decks by Instanauts_jp

Other Decks in Technology

Transcript

  1. © 2024 Mizuho Research & Technologies, Ltd. 0 角 兼行

    JVM(JavaVM)の性能分析者観点で探るInstanaの可能性 2024年12月12日 (免責事項) 当レポートは情報提供のみを目的として作成されたものであり、商品の勧誘を目的 としたものではありません。本資料は、当社が信頼できると判断した各種データに 基づき作成されておりますが、その正確性、確実性を保証するものではありません。 また、本資料に記載された内容は予告なしに変更されることもあります。
  2. © 2024 Mizuho Research & Technologies, Ltd. Strictly Confidential 5

    JVMって? JVMがシステム特性に合 わせて設計されていない と・・・ Javaで作成した ソースコード コンパ イラ JVM (Java仮想マシン) Window OS Linux OS JVM (Java仮想マシン) バイトコード JVMの動作 メモリ空間 どんなにリソースが潤沢なマシン上であっても、 JVMをデフォルトの設定のまま使用すると、システムの処理が 遅くなったり、最悪の場合、処理が停止するケースもあります アプリケーション アプリケーション JVMはJavaで作成されたプログラムをOS上で実行するために必要なソフトウェアです。 そのため、Javaプログラムが動作している環境=JVMがあると考えて問題ありません。 パートナー製のフレームワークを採用していても同様です。 プログラムをメモ リに格納して実行 する 不要なプログラム をメモリから削除 ※ガベージコレクショ ン(GC)と呼びます JVMがOS間の差異を吸収するので、どのOS でも同じプログラムで実行できます。 JVMの動作はシステムのパフォーマンスに大きく影響 Javaプログラムが動く仕組み ソースコードと 機械語の中間 コード 頻繁に使用メモリ の一括解放が発生 して処理が遅くな る。 (FullGC) GCでメモリからプ ログラムが削除さ れずに処理が停止 する。 (OutOfMemory)
  3. © 2024 Mizuho Research & Technologies, Ltd. Strictly Confidential 6

    JVMコンシェルジュの取り組み 「JVMコンシェルジュ」とは? <みずほ>ではJavaシステムが多く存在します。 そのなかで、「JVMコンシェルジュ」とは、 当部が<みずほ>内に提供するJavaシステム向けのJVMに特化した性能分析サービスです。 JVMはその種類やバージョンが多く、現 場でJVMの専門家を抱えるのは困難。コ ンシェルジュメンバが専門家としてCoE 的に各種JVMに対応。 スペシャリストの対応 2016年より「性能支援」の取組を開始。 MINORI(みずほの新勘定系システム)を はじめ、数多くの性能レビューや性能課 題に対応。2024年度は既に約20システ ムの対応実施。 豊富な実績 JVMパラメータチューニングを実施する ことで、パフォーマンスが数倍~数十倍 改善した事例あり。JVM設計を誤ると、 OSやリソース(CPU、メモリ等)の増強で は解決できない性能課題が発生するが、 それら全てに対応。 確かな分析 特色 1 特色 2 特色 3
  4. © 2024 Mizuho Research & Technologies, Ltd. Strictly Confidential 7

    JVMの用語 【ヒープメモリ】 JVMで動的に割り当てられるオブジェクトの 格納領域です。 【FULL GC】 ヒープメモリの全領域を対象に、 使用していないオブジェクトを掃除します。 GC中はアプリケーションが処理を中断します。 (StopTheWorld:GCによるアプリ停止時間) 【New GC】 ヒープメモリの新世代領域を対象に、 使用していないオブジェクトを掃除します。 GC中はアプリケーションが処理を中断します。 (StopTheWorld:GCによるアプリ停止時間) 【OutOfMemory】 ヒープメモリの空き容量が不足して、 新規オブジェクトを作成できない状態です。 アプリケーションは停止します。 【GCログ】 GCが発生する度にJVMやGCの情報が 記録されるログです。 【JMX】 JavaアプリケーションやJVMの監視や管理を 行うためのAPIです。
  5. © 2024 Mizuho Research & Technologies, Ltd. Strictly Confidential JVMとしての分析観点

    9 1 アプリケーションが異常終了しないか OutOfMemoryによりアプリケーションが停止しないか メモリーリークによりOutOfMemoryが発生しやすい状況ではないか 2 処理時間に遅延発生しないか GC多発により頻繁にStopTheWorldが発生していないか GCの処理時間が長くないか 以下を目的として、性能テストなどでJVMの分析をしています
  6. © 2024 Mizuho Research & Technologies, Ltd. Strictly Confidential JVMとしての分析観点

    10 メモリーリーク有無 GC発生した後もヒープメモリの使用量が 減っていない、メモリーリーク発生していないか 1 FullGCの評価 FullGCの発生頻度、処理時間などの評価 2 NewGCの評価 NewGCの発生頻度、処理時間などの評価 3 分析する際の具体的な観点[ 分析項目の一部抜粋 ] ヒープ使用量、ヒープサイズ ヒープ使用量の変動や、 使用量に応じたヒープサイズの評価 4 統計情報 GCの処理時間平均やスループット、 GC発生事由などの評価 5
  7. © 2024 Mizuho Research & Technologies, Ltd. Strictly Confidential JVMとしての分析手法

    11 GCログ :GC発生する度にJavaヒープ状況(使用量やGC事由)を記録するログ GCViewer :GCログを視覚的に分析するためのツール JVMコンシェルジュとして分析する際は、対象サーバよりGCログを出力 GCログをインプットにしてGCViewerにて分析 GCログ出力 GCログ イ ン プ ッ ト GCViewer JVM分析 準備作業
  8. © 2024 Mizuho Research & Technologies, Ltd. Strictly Confidential Instanaの検証

    14 今回ご紹介するのは、HotSpot JVMのGCタイプ:CMSベースに、 GCViewerとの比較を交えながらご説明します。 (本資料においては、カスタムダッシュボードについて考慮せず) Instanaのダッシュボードより、 [インフラストラクチャーの分析]⇒[JVM] を選択
  9. © 2024 Mizuho Research & Technologies, Ltd. Strictly Confidential JVMとしての分析観点(検証観点)

    15 今回の検証 ... Instanaでこれらの分析観点が確認できるか(表示)を確認 分析する際の具体的な観点[ 分析項目の一部抜粋 ] メモリーリーク有無 GC発生した後もヒープメモリの使用量が 減っていない、メモリーリーク発生していないか 1 FullGCの評価 FullGCの発生頻度、処理時間などの評価 2 NewGCの評価 NewGCの発生頻度、処理時間などの評価 3 ヒープ使用量、ヒープサイズ ヒープ使用量の変動や、 使用量に応じたヒープサイズの評価 4 統計情報 GCの処理時間平均やスループット、 GC発生事由などの評価 5
  10. © 2024 Mizuho Research & Technologies, Ltd. Strictly Confidential 分析

    メモリーリーク有無 16 1 検証ポイント: GC後のヒープ使用量の増加傾向がグラフから読み取ることが可能か 折線の底部から 確認することができる 留意点 GC直後のヒープ使用量ではなく一定期間の平均であるため正確な判断は難しい OutOfMemoryやFullGC多発につながる、 メモリーリークの発生がヒープ使用量によっ て確認できる必要がある おおよそのメモリーリークの発生状況は確認可能
  11. © 2024 Mizuho Research & Technologies, Ltd. Strictly Confidential 分析

    FullGCの評価、 NewGCの評価 17 検証ポイント: GC発生頻度、処理時間がGC種別ごとに読み取ることが可能か 2 左図では、GCの処理時間と発生頻度(回数)が 折れ線(頂点)や点から確認することができる 種別ごとに GCの発生状況を読み取り可能 3 一定期間の平均や合計として、 GCの発生頻度や処理時間は確認可能
  12. © 2024 Mizuho Research & Technologies, Ltd. Strictly Confidential 分析

    ヒープ使用量、ヒープサイズ[1/2] 18 4 4 (1) ヒープ使用量が 時間経過ごとに 折線表示される (2) ヒープサイズは 最大のみ確認できる ※ 変動は不可 検証ポイント: (1) ヒープ使用量の読み取り …………… グラフ上に時間経過ごとに折線表示される (2) ヒープサイズの読み取り …………… 最大ヒープサイズが線表示される 次ページも参照 (3) ヒープ領域別の情報の読み取り … 別のグラフから確認可能 留意点 ヒープサイズが変動する場合、その状況は分からないため 変動の有無によってJVMの性能対策方針が大きく変わる
  13. © 2024 Mizuho Research & Technologies, Ltd. Strictly Confidential 分析

    ヒープ使用量、ヒープサイズ[2/2]|GCViewerの場合 19 4 ヒープサイズ、ヒープ使用量がグラフ化され、ヒープサイズの変動も可視化 ヒープサイズの最大 FullGCが発生 GCViewer:ヒープサイズ変動時の画面例 ヒープの空き容量が最大ヒープサイズから比 べると余裕がある様に見えるが、実際には変 動しているため、ヒープの空き容量が少なく FULLCGが発生している。
  14. © 2024 Mizuho Research & Technologies, Ltd. Strictly Confidential 分析

    統計情報 20 Instanaでは、スループットやGC発生事由、統計情報は表示されない。 ※ スループット=(アプリケーション処理時間-GC時間:StopTheWorld時間)/アプリケーション処理時間 GCViewerの画面例 検証ポイント: (1) スループットの表示 …… スループット情報は出力されない (2) GC発生事由の表示 ……… GC事由は表示されない GCViewerではスループット情報が表示される 5
  15. © 2024 Mizuho Research & Technologies, Ltd. Strictly Confidential JVMとしての分析観点(検証結果)

    21 分析する際の具体的な観点[ 分析項目の一部抜粋 ] メモリーリーク有無 ... GC発生した後もヒープメモリの使用量が 減っていない、メモリーリーク発生していないか 1 FullGCの評価 .......... FullGCの発生頻度、処理時間などの評価 2 NewGCの評価 .......... NewGCの発生頻度、処理時間などの評価 3 ヒープ使用量、ヒープサイズ ... ヒープ使用量の変動や、 使用量に応じたヒープサイズの評価 4 統計情報 ............................. GCの処理時間平均やスループット、 GC発生事由などの評価 5
  16. © 2024 Mizuho Research & Technologies, Ltd. Strictly Confidential 分析観点以外の気づき

    22 対象JVMの範囲の広さ 検索の容易性 Instanaの場合、JVMの種類、Javaバージョン、 GCタイプに左右されず、JMX対応している JVMであれば、表示可能(9種類検証済み) 1 ※GCログから分析する場合、各JVMによって、 分析ツールが異なり、使い別けが必要 (Hotspot:GCViewer、OpenJ9:GCMV JRockit:MissionControl、ベンダー製JVMなど) 現時点のJVMの状況を即時表示可能 1 過去時点のJVMの状況を時間指定することで 即時表示可能 2 「GCログ+GCViewer」と比較して、「Instana」はその適応範囲が広く、検索性も良い ※GCログをGCViewerで閲覧する場合、ログの転送が必要。 また、分析したい時間帯のログを見つけることも必要。
  17. © 2024 Mizuho Research & Technologies, Ltd. Strictly Confidential 今後のInstanaに期待することⅠ

    24 ヒープ使用量 GC処理時間 ヒープ使用量がある期間の平均で表示 1 GC処理時間がある期間の合計で表示 1 ヒープ使用量、GC処理時間共に、1回のGC毎の情報もグラフ化されると より精緻な解析が可能になる ※短時間でヒープ使用量が増減した場合に そのスパイク状況を検知できない ※GC処理時間が長いものを特定できない
  18. © 2024 Mizuho Research & Technologies, Ltd. Strictly Confidential 今後のInstanaに期待することⅡ

    25 Instanaでは、GC種別によってGC情報のフレーズが異なる。 下記の赤線が所謂NewGC 複数のJavaシステムを所管している担当者がInstanaでJVMの状況を分析する場合、 それぞれのGC種別ごとのフレーズを覚える必要があり、混乱する可能性あり。 JMXの仕様だと理解するものの、Instanaにてフレーズを統一すると可読性が上がる。 (NewGC、FullGC、コンカレントなど) パラレルGC CMS gencon(OpenJ9)
  19. © 2024 Mizuho Research & Technologies, Ltd. Strictly Confidential 今後のInstanaに期待することⅢ

    26 GCログもインプットとすることで、 GC毎の情報や事由が分かり、詳細な分析が可能に JMXの情報を定期的に取得してダッシュボードに表示 現在
  20. © 2024 Mizuho Research & Technologies, Ltd. Strictly Confidential まとめ

    28 JVMの状態の概要を確認することは可能。 但し、ヒープ容量の変動や、GC発生の統計 情報などの詳細は別手段での確認が必要。 JVM健全性確認 「Instana」は分析可能なJVM種類が多い。 また、検索までの準備もほぼなく、時間指定 も使い勝手が良い。 検索の使い勝手 インシデント発生時の一次切り分けが可能な 場合もあるが、詳細な原因分析のためには GCログ等の他の情報が必要な場合もあり。 インシデント発生時の原因分析 インシデント発生時のためにInstanaと合わせてGCログ出力も重要 但し、通常稼働時はInstanaでクイックに健全性が確認でき、とても有効!! ◦ ◎ △
  21. 30