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 の違い (あらゆる側面から詳細に説明)

推薦する

Vue3 がコンポーネント通信に mitt を使用する手順

目次1. インストール2. プロジェクトにインポートしてマウントする3. 使用Vue2.x はコンポ...

モバイル端末での Vue2.x Picker のグローバル呼び出し実装

目次ピッカーコンポーネントとはピッカーコンポーネントの問題解決オプションの説明解決ディレクトリ部門P...

Docker で Selenium グリッド分散環境を構築する実用的な方法

最近、Zoom ビデオ会議をテストし、100 人が同時に会議に参加することをシミュレートする必要があ...

MySQL インデックス失敗の原理

目次1. インデックス失敗の理由2. インデックスの秩序が崩れる状況を見てみましょう。 - インデッ...

mysqldump を使用して MySQL データをバックアップする方法

1. mysqldump の紹介mysqldump は、MySQL に付属する論理バックアップ ツー...

WeChatアプレットのオーディオコンポーネントがiOSで再生できない問題の解決策

解決策:クリック イベントをオーディオ コンポーネントにバインドし、再生メソッドと一時停止メソッドを...

ReactのPropsの簡単な比較

目次クラスコンポーネントのプロパティ比較浅い同等の浅い比較機能コンポーネントの簡単な比較先週面接に行...

nginx で SSL 証明書を設定して https サービスを実装する方法

前回の記事では、openssl を使用して無料の証明書を生成した後、この証明書を使用してローカル ノ...

2つのシンプルなメニューナビゲーションバーの例

メニューバーの例 1: コードをコピーコードは次のとおりです。 <!DOCTYPE html ...

CSS でのシングル div 描画テクニックの実装

純粋な HTML + CSS を使ってドラえもんの絵を描くなど、CSS 描画に関する記事をよく見かけ...

MySQL 30軍事ルールの詳細な説明

1. 基本仕様(1)InnoDBストレージエンジンを使用する必要があります。解釈:トランザクション、...

フロントエンドブラウザのフォントサイズが12px未満のソリューション

序文最近プロジェクトに取り組んでいたとき、UI デザインのフォント サイズは 10 ピクセルでした。...

Tomcat Nativeを使用してTomcat IO効率を向上させる方法の詳細な説明

目次導入Tomcatへの接続方法APR と Tomcat ネイティブtomcat で APR を使用...

Zabbix で Windows のパフォーマンスを監視する方法

背景情報最近、Windows パフォーマンスに関する本を読み直しています。以前は SCOM 監視を使...

Win10 64 ビットで圧縮パッケージを使用して最新の MySQL 8.0.18 をインストールするチュートリアル (画像とテキスト付き)

WIN10 64ビットに最新のMySQL8.0.18をインストールダウンロード公式サイトから最新バ...