Linux で CPU 使用率が高くなる原因をトラブルシューティングするプロセスの詳細な説明

Linux で CPU 使用率が高くなる原因をトラブルシューティングするプロセスの詳細な説明

序文

CPU 使用率が高くなるのは、オンラインでよくある問題です。この対処法がわからないと、本当にがっかりします。

ここに画像の説明を挿入

心配しないで、兄弟、コンボを教えてあげるよ。

始める

プロジェクトから始めましょう。API 全体で、/cpu/{count} をリクエストすると、CPU を手動で増やすことができます。賢いゴーストですね~

    @GetMapping("/cpu/{count}")
    パブリック長いcpuTest(@PathVariable("count")長いcount) {
        長い数値 = 0;
        (int i = 0; i < count; i++) の場合 {
            数値++;
        }
        戻り番号;
    }

パックしてアップロードして開始

ここに画像の説明を挿入

実行中です。プロセス番号14849 を覚えておいてください。

まず、通常の状況での CPU 使用率を見てみましょう。

ここに画像の説明を挿入

とてもリーズナブル

オンラインCPUサージをシミュレートする

/cpu/{100000000000} インターフェースに CPU 使用率を上げるよう要求し、top を使用して CPU 使用率を監視します。

ここに画像の説明を挿入

98%まで直接作業します、非常に良い

では、始めましょう。現在、オンラインで問題が発生しています。CPU の使用率が常に非常に高くなっています。上司から、原因を突き止めてサポートを開始するように依頼されました。

実際、CPU を発生したのは誰かはわかっていますが、詳細が十分ではありません。どのプロジェクトに問題があるかを知るだけでは十分ではありません。上司が彼を専門家と呼ぶことができるように、犯人、どのメソッド、何行が問題を引き起こしたかを見つける必要があります。

ステップ

jps+topはアプリケーションプロセスを検索します

pidtop -Hp {pid} スレッドtidを見つける

tid を 16 進数に変換 printf "%x\n" {tid}

スタック情報を印刷する jstack

欲しいものをフィルタリングする

トラブルシューティング

プロセス ID は14849であると判別されました。次のステップは、問題の原因となっているスレッドを見つけることです。

トップ -Hp 14849

ここに画像の説明を挿入

明らかにこの14908がやったことだ。

16進数に変換

ここに画像の説明を挿入

印刷スタック

ここに画像の説明を挿入

スタック トレースを見ると、問題は TestController の 20 行目にあることがわかります。コード検証に進みましょう。

ここに画像の説明を挿入

大きな問題ではない

事件を解決する

花を散らす

Linux での CPU 速度が速い場合の詳細なトラブルシューティング プロセスに関するこの記事はこれで終わりです。Linux での CPU 速度が速い場合のトラブルシューティングに関する関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • LinuxのCPU負荷とCPU使用率の詳細な説明
  • Linux システムでの CPU 使用率が高い場合のトラブルシューティングのアイデアと解決策

<<:  CSS3は光る境界線効果を実現します

>>:  HTML における Div と table の違い (あらゆる側面から詳細に説明)

推薦する

phpmyadmin を使用して MySQL 権限を設定する方法

目次ステップ 1: root ユーザーとしてログインします。ステップ 2: 新しいデータ テーブルを...

変数が空かどうかを判定するシェルの方法の概要

シェルで変数が空かどうかを判断する方法シェルプログラミングでは、パラメータのエラーチェック項目に、変...

JavaScript 関数のカリー化

目次1 関数カリー化とは何ですか? 2 カレーの役割と特徴2.1 パラメータの再利用2.2 早期復帰...

HTML ウェブページの段落レイアウトと改行

Web ページの外観はレイアウトに大きく左右されます。ページ内に長い段落のテキストがある場合、通常は...

v-html レンダリング コンポーネントの問題

以前 HTML を解析したことがあるので、今日は Vue ドラッグ アンド ドロップを使用して、Ku...

MySQLが基礎データ構造としてB+ツリーを使用する理由

MySQL の基盤となるデータ構造が B+ ツリーであることは誰もが知っていますが、ではなぜ赤黒ツリ...

Vueは質問応答機能を実装する

1. リクエスト回答インターフェース2. ユーザーの回答が正しいかどうかを判断します。回答が正しい場...

MySQL インデックスの使用方法 (単一列インデックスと複数列インデックス)

1. 単一列インデックスどの列にインデックスを作成するかを選択することは、パフォーマンス最適化プロ...

Linux に MySQL をインストールする方法 (yum とソース コードのコンパイル)

Linux に MySQL をインストールするには、yum インストールとソース コード コンパイ...

JavaScript で実装された 7 つのソート アルゴリズムの概要 (推奨!)

目次序文バブルソート基本アルゴリズム2 番目の書き方は、基本的なアルゴリズムに基づいて改良されていま...

CSS のサイズ単位についての簡単な説明

ブラウザの互換性はどんどん良くなってきています。モバイル端末は基本的にすべてWebKitベースです。...

MySQL空間関数を使用してロケーションパンチインを実装するための完全な手順

序文プロジェクトの要件は、ユーザーの現在の位置が特定の地理的位置範囲内にあるかどうかを判断することで...

vue + Electron でデスクトップ アプリケーションを作成するためのサンプル コード

1.vueパッケージングここでは、vueネイティブパッケージングコマンドを使用してvueプロジェクト...

Vue ポーリング リクエスト ソリューションの完全な例

世論調査の理解実際、ポーリングの焦点はループ自体ではなく、実行間の間隔にあります。 Ajax は非同...

CSSの2つの特別な値は、カスケードの継承と初期メソッドを制御するために使用されます。

カスケードを制御するために CSS の任意のプロパティに割り当てることができる特別な値が 2 つあり...