チューニング | JVMパフォーマンス監視とチューニングを知らないと言うのはやめましょう

チューニング | JVMパフォーマンス監視とチューニングを知らないと言うのはやめましょう

[[350999]]

この記事はWeChatの公開アカウント「小明野菜市場」から転載したもので、著者は小明野菜市場です。記事を転載する場合は小明野菜市場の公式アカウントまでご連絡ください。

こんにちは!私はシャオシャオです。今日は今週最後の記事です。この記事では、JVM のチューニングとパフォーマンスの監視に焦点を当てます。

一般的なツール

よく使用されるツールは、主に JDK 組み込みツールと Arthas です。

JDK組み込みツール

jps 仮想マシンプロセスステータスツール

仮想マシンのプロセスステータスを表示するためのツールコマンドの例

  1. $ jps
  2. 15236 日本人
  3. 14966 例1

jstat 仮想マシン統計監視ツールは、仮想マシンのヒープ メモリ、メモリ情報、クラスのロードおよびアンロード情報などを表示するために使用されます。

ヒープメモリ情報を表示する

  1. jstat -gc 14966
  2. S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
  3. 2048.0 2048.0 0.0 0.0 12800.0 9345.8 34304.0 26638.8 5248.0 4971.3 640.0 554.9 2 0.032 2 0.049 0.082

ヒープメモリ情報を1000ミリ秒ごとに10回印刷する

クラスのロードとアンロードの情報を表示する

  1. $ jstat -クラス 14966
  2. ロードされたバイト数 アンロードされたバイト数 時間 
  3. 829 1604.4 0 0.0 0.37

Java 構成情報ツール

JVMの起動パラメータを表示する

  1. $ jinfo -フラグ 26472
  2. VM フラグ:
  3. -XX:CICompilerCount=3 -XX:InitialHeapSize=52428800 -XX:MaxHeapSize=52428800 -XX:MaxNewSize=17301504 -XX:MinHeapDeltaBytes=524288 -XX:New

jstack Java スタック トレース ツール

つまり、現在のメモリに対して関連するスナップショットが生成され、関連するスナップショット情報が保存されます。

jmap Kava メモリ マッピング ツール

メモリオブジェクトの数と占有されているメモリスペースを表示するために使用されます

jhatはhtmlタイプのスナップショットファイルを生成します

  1. $ jhat ダンプ.hprof
  2. dump.hprofから読み込んでいます...
  3. ダンプファイルは2020年5月3日日曜日17:09:07 CSTに作成されました
  4. スナップショットを読み取り、解決中...
  5. 42293 個のオブジェクトを解決しています...
  6. 参照を追跡すると、8 つのドットが予想されます。
  7. 重複参照の削除............
  8. スナップショットが解決されました。
  9. ポート7000HTTPサーバーを起動しました
  10. サーバーの準備できました

起動後、ブラウザを開き、http://localhost:7000/

jvisualvm & VisualVM: ヒープダンプスナップショット分析ツール

上記のコマンドと同様に、ウェブサイトではなくファイルを直接エクスポートします。


オブジェクト情報


スレッド情報

jconsole: JVM パフォーマンス監視

パフォーマンス監視用のユーザーインターフェースを起動します


起動に成功した後

アルサス

AlibabaのオープンソースJava診断ツール

インストール

ダウンロード

  1. wget https://alibaba.github.io/arthas/arthas-boot.jarjava -jar arthas-boot.jar

解凍

  1. arthas-packaging-bin.zip を解凍します。

インストール

  1. sudo su adminrm -rf /home/admin/.arthas/lib/*cd arthas./install- local .sh

起動する

  1. ./.shとして

ヘルプ

ダッシュボードリアルタイムデータパネル

スレッド スレッド情報


jad 逆コンパイル クラス

データの観察を見る

チューニング

展開


Full GC 時間が長いため、サーバーが頻繁にフリーズします。その理由は通常

  1. 新しい世代が小さすぎるため、オブジェクトが古い世代に早めに入り、フルGCがトリガーされます。
  2. 古い世代は大きく、フルGCには長い時間がかかります

解決策は、NewRatio の値を減らして、古い世代に入るオブジェクトの数をできるだけ減らすことです。

メモリ使用量を調整する

直接記憶

OutOfMemoryError: ダイレクトバッファメモリを回避するために XX:MaxDirectMemorySize を調整します

スレッドスタック

StackOverflowError または OutOfMemoryError を回避するために -Xss を調整します: 新しいネイティブ スレッドを作成できません

GCの観点から、多数のオブジェクトが新世代に生き残る問題を解決し、マイナーGC時間が長すぎるというパラメータを調整します。

  1. -XX:生存率=65536
  2. -XX:最大テンリングしきい値=0
  3. -XX:常に在職

著者について

私は、二級都市で生まれ、一級都市に住んでいるプログラマーの Xiaoxiao です。私はXiaoxiaoです。また次回お会いしましょう。

<<:  Kubernetes をローカルで実行するための 4 つのオープンソース ツール

>>:  Microsoft プラットフォームを使用してクラウドベースのインテリジェント サプライ チェーンを構築し、「在庫切れ」のジレンマを回避します。

推薦する

買収に関しては、自社の製品チェーンに活路を残すことに他なりません。

現在、インターネット企業の買収が相次いでおり、自社のエコシステム内の隙間を埋めるものであれ、上場への...

タレントネットワークを例に、ユーザーが登録をためらわないようにする方法について説明します。

ほとんどのインタラクティブな Web サイトでは、まずユーザーが登録プロセスを完了する必要があります...

エッジツークラウドがデジタル変革の次の段階をどのように推進するか

ここでは、エッジツークラウド戦略のメリットと、HPE GreenLake などのプラットフォームがそ...

フォーラムを使用して外部リンクを効果的に構築する方法

「コンテンツは王様、外部リンクは女王」という言葉は、すべてのウェブマスターが知っていると思います。こ...

効果的なクラウド ネットワーク セキュリティ戦略を導入するための 5 つの重要なステップ

従来のネットワーク セキュリティ システムは、物理的およびソフトウェア ベースの制御を適用してインフ...

ユー・ミンホン:検索マーケティングは現在最高のマーケティング手法です

最近、第4回「起業家サロン」が北京新雲南皇冠酒店で開催された。新東方教育科技集団の創設者である于敏宏...

美団は「パブリッククラウド」事業を放棄し、従業員は異動または退職

業界関係者は、美団がパブリッククラウド戦略とビジネスを放棄し、社内サービス(つまり社内使用)に切り替...

Meilishuo の SEO 分析 - Meil​​ishuo が Taobao で優れているのはなぜですか?

多数のタオバオアフィリエイトサイトが次々と消滅したとき、伝説のタオバオアフィリエイトである美麗碼が挑...

医療ネットワークの編集者は執筆と作成の負担に耐えられない

2月2日に公開された記事「SEM:医療ウェブ編集者の手腕」の中で、著者は次のような一文を述べています...

Baiduは現在、ウェブサイトの直帰率を計算することができない。

直帰率は、SEO の世界では非常によく使われる用語です。まずは、ウェブサイトの直帰率とは何かをご紹介...

調査によると、クラウドコンピューティングの支出は2021年以降も増加し続ける可能性が高い

調査会社ガートナーの調査によると、多くの企業がコロナウイルスの流行中に業務をクラウドに移行するための...

サーバーレス調査によると、REST APIの導入が最も一般的なユースケースであることが判明

最近、Github はサーバーレス コンピューティングに関する調査を発表し、約 600 人の Git...

新しい CN ドメイン名ポリシーがドメイン名登録者に与える影響

今月28日、CNNICは新しいドメイン名政策である「中国インターネットネットワーク情報センタードメイ...

毎日ウェブサイトが登録されているのに、登録総数が増えない理由

私は毎日記事を更新するウェブサイトを持っており、ホームページのスナップショットも毎日更新しています。...