[tips][Java]CodeCache領域使用状況の確認方法 您所在的位置:网站首页 codecache配置 [tips][Java]CodeCache領域使用状況の確認方法

[tips][Java]CodeCache領域使用状況の確認方法

2024-06-06 05:03| 来源: 网络整理| 查看: 265

先日CodeCacheによる性能問題が発生した、原因を突き止めるには時間が掛かりました。 そのわけは

全体が遅いではなく、一部処理のみ遅い スレッドダンプから遅い箇所の特定が出来ない プロファイリングからホットメソットの特定が出来ない 性能劣化時間帯に同期化によるロック待ちが発生していない 性能劣化時間帯のシステムコールのコストは平常時と変わらない 性能劣化時間帯にメジャーGCが起きていない、マイナーGCの時間も正常数値範囲ないである

よく言われているJVM性能に影響する要素を一通り確認しても、問題の特出が出来なかった。

今回の障害ケースは以下のような特徴があります。

アプリケーションサーバ一定時間運転後、特定画面の処理時間が数十倍伸びる アプリケーション再デプロイ後、スローダウン現象が起きやすくなる傾向がある 一度性能劣化すると、アプリケーションサーバを再起動しないと回復しない

この現象はメモリリークによるGC時間が伸びるのような性能劣化ケースと似ている。 しかしGCによるスローダウンは波があるはず、かつ特定画面が遅いとは限らないでしょう。 つまり、CodeCacheによる性能劣化は原因を気づきにくい場合があります。 最終的Flight RecorderのJITコンパイラー記録から問題がCodeCacheにあることを推測した。 OpenJDKご使用の場合 -XX:+PrintCompilation JVM起動フラグでJITコンパイルログから同 じことも確認できる。

スローダウン前に取れた記録

性能劣化時間帯で取れた記録

ご覧の通り、性能劣化時間帯にJITコンパイラーが動いていないようだ。 CodeCache領域の使用量を確認すると、空きがないことも確認されました。 ここで問題はCodeCacheが足りないと推測出来るでしょう。ただ単に推測に過ぎないので、 根拠付けるためにテスト用アプリケーションをデプロイしてJITコンパイラーの挙動を確認しました。 やはりJITコンパイラーが動いていないのだ。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有