チューニング | 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 プラットフォームを使用してクラウドベースのインテリジェント サプライ チェーンを構築し、「在庫切れ」のジレンマを回避します。

推薦する

競合他社の方針、方法、戦略を分析し発見する方法

競争があってこそ、より大きな進歩が実現します。国を外界から隔離する政策は、もはや社会の発展には適して...

ウェブサイトのセキュリティと安定性を確保し、最適化を安心して行えるようにします。

ウェブサイトのセキュリティと安定性は、最適化担当者が注意を払う必要がある問題です。この 2 つの側面...

B2Cウェブサイトに関する私の意見 - 戦略

みなさん、こんにちは。またお会いできて嬉しいです。前回のオンサイト記事とオフサイト記事の公開にあたり...

ByteDanceのゲームアドベンチャー

バイトダンスは2019年に10以上のゲームを配信して試行錯誤した後、2019年に独自のゲーム開発のプ...

実践経験のまとめ: フォーラムの宣伝方法

この昆山ウェブサイト最適化ブログでは、ウェブサイト最適化と SEO の基本知識についてすでにたくさん...

Kafka を使用したデジタル ツイン IoT アーキテクチャの実装

[51CTO.com クイック翻訳] デジタルツインは、現実の特定の事柄(プロセスやサービスを含む)...

Baiduを例に、企業向けソフト記事の書き方についてお話しします。

本日の記事では主に企業のソフト記事の書き方を紹介したいと思います。まず、企業ソフト記事とは何かを理解...

確かな情報です! VLANの基本の概要

VLANとは何ですか? VLAN (Virtual LAN) は、中国語に翻訳すると「仮想ローカルエ...

キーワードのランキングサイクルを短縮するにはどうすればよいでしょうか?

多くのウェブマスターはこのタイトルを見て、私が異常なブラックハット手法について話していると思ったでし...

Kubernetes オーケストレーション ツール Minikube を 1 つの記事で理解する

1. Minikube が必要な理由コンテナ技術の急速な発展と広範な応用により、Kubernetes...

リモートコラボレーションプラットフォームはどこにでもあります。なぜチームワークの中心になったのでしょうか?

[51CTO.comよりオリジナル記事] 庚子年の初めに、新型コロナウイルスの突然の発生により、人々...

クラウドネイティブなビッグデータプラットフォームのK8sベースを構築する方法

デジタル変革の加速に伴い、ビッグデータはビジネス管理の主な手段の1つとなり、ますます多くの業界がビッ...

#ニュース# BandwagonHost CN2 ネットワーク VPS の再入荷、DC3 と DC8 のオプション、および一部の製品調整

2017 年 2 月以来、Bandwagonhost の VPS 製品ラインの価格は継続的に上昇して...