Linux システムでの CPU 使用率が高い場合のトラブルシューティングのアイデアと解決策

Linux システムでの CPU 使用率が高い場合のトラブルシューティングのアイデアと解決策

序文

Linux 運用保守エンジニアとして、日々の業務の中で Linux サーバーの CPU 負荷が 100% に達し、高い状態が続く状況に遭遇することがあります。CPU 負荷が高い状態が続くと、業務システムの正常な動作に影響を及ぼし、企業に損失をもたらします。


このような状況に遭遇すると、多くの運用および保守担当者が困惑することがよくあります。CPU 過負荷の問題の場合、通常は次の 2 つの方法を使用して、問題を迅速に特定できます。

方法1

ステップ1: 使用

topコマンドを実行し、shift+pを押してCPU順に並べ替える

CPUを過剰に使用しているプロセスのPIDを見つける

ステップ2: 使用

top -H -p [プロセスID]

プロセス内で最も多くのリソースを消費するスレッドのIDを見つける

ステップ3: 使用

echo 'obase=16;[スレッドID]' | bc または printf "%x\n" [スレッドID]

スレッド ID を 16 進数に変換します (文字は小文字にする必要があります)

bcはLinuxの計算機コマンドです

ステップ4: 実行

jstack [プロセスID] |grep -A 10 [16進数のスレッドID]"

スレッドのステータス情報を表示する

方法2

ステップ1: 使用

topコマンドを実行し、shift+pを押してCPU順に並べ替える

CPUを過剰に使用しているプロセスを見つける

ステップ2: 使用

ps -mp pid -o スレッド、tid、時間 | ソート -rn

スレッド情報を取得し、CPUを大量に消費するスレッドを見つける

ステップ3: 使用

echo 'obase=16;[スレッドID]' | bc または printf "%x\n" [スレッドID]

必要なスレッドIDを16進形式に変換します

ステップ4: 使用

jstack pid |grep tid -A 30 [スレッドIDの16進数]

スレッドスタック情報を印刷する

ケーススタディ

シナリオの説明

実稼働環境での JAVA プロセスの CPU 使用率が高い場合のトラブルシューティング

解決プロセス

1. topコマンドによると、PID 2633のJavaプロセスがCPUの最大300%を占有し、障害が発生していることがわかります。

2. プロセスを見つけた後、特定のスレッドまたはコードを見つけるにはどうすればよいでしょうか? まず、スレッド リストを表示し、CPU 使用率の高いスレッドで並べ替えます。

[root@localhost ~]# ps -mp 2633 -o スレッド、tid、時間 | sort -rn

結果は次のとおりです。


CPU 消費量が最も高いスレッド (TID) 3626 が見つかりました。このスレッドは 12 分間 CPU 時間を占有していました。

3. 必要なスレッドTIDを16進形式に変換する

[root@localhost ~]# printf "%x\n" 3626
18 18 18

4. 最後に、jstack コマンドを使用して、プロセスの下にあるこのスレッドのスタック情報を出力します。

[root@localhost ~]# jstack 2633 |grep "e18" -A 30

トラブルシューティングと比較して、障害を発見することも同様に重要です。 Zabbix、Nagios、Alibaba Cloud Monitoring(クラウド サーバー用)など、市場に出回っているほとんどの監視ソフトウェアは、サーバー負荷のリアルタイム監視を実現できます。しかし、ほとんどのソフトウェアでは、運用・保守担当者がルールを積極的に設定したり、テストを実施して問題を発見する必要があります。受動的にアラートを受信するにはどうすればよいでしょうか。

王教授、実用的な運用・保守ソフトウェアをお勧めしたいと思います。Alibaba Cloud にビジネスを展開しているユーザーは、監視が必要な読み取り専用の AcessKey をバインドするだけで、クラウド リソースのアラーム情報を対応するチーム メンバーに迅速に通知できます。

アクティブ アプローチからパッシブ アプローチへの変更により、一方では運用および保守エンジニアの作業負荷が軽減され、他方では O&M エンジニアがアラームを見逃したり無視したりする可能性も軽減されます。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。

以下もご興味があるかもしれません:
  • LinuxのCPU負荷とCPU使用率の詳細な説明
  • Linux で CPU 使用率が高くなる原因をトラブルシューティングするプロセスの詳細な説明

<<:  Vueカスタム命令とその使用方法の詳細な説明

>>:  MySql 8.0.11 のインストール プロセスと Navicat とのリンク時に発生する問題の概要

推薦する

JavaScript の基礎におけるデータ型の詳細な説明

目次1. データ型1.1 なぜデータ型が必要なのか? 1.2 変数のデータ型1.3 データ型の分類2...

Docker を使用して Spring Boot をデプロイする方法

Docker テクノロジの開発により、マイクロサービスの実装にさらに便利な環境が提供されます。Doc...

Linux プラットフォームの MySQL でリモート ログインを有効にする

開発中、MySQL へのリモートアクセスでよく問題に遭遇します。そのたびに検索する必要があり、面倒に...

MySQLのファジークエリの要約

1. 一般的な使用法: (1)%で使用する% は 1 つ以上の文字のワイルドカードを表します。たとえ...

Linuxファイルを表示するコマンドの詳細な説明

Linuxファイルを表示する方法ファイルの内容を表示するコマンド: catは最初の行からコンテンツを...

YUM を使用して Linux (CentOS 7) に MySQL 5.7.18 をインストールする方法の詳細なチュートリアル

このプロジェクトでは MySQL を使用する必要があります。これまで Windows では常に確実に...

プロセスごとにネットワーク帯域幅を監視する Linux ツール Nethogs のインストールと展開

概要Linux 用のオープン ソース ネットワーク監視ツールは数多くあります。たとえば、帯域幅の使用...

Mybatisの特殊文字処理の詳細な説明

序文: Mybatis の特殊文字処理、Mybatis の xml ファイル内の特殊文字の処理、ここ...

ROS2のインストールとdocker環境の使い方について

目次Docker を使用する理由は何ですか? DockerのインストールROSイメージを取得するRO...

CSS3 のエラスティック レイアウトでの em の使用の概要: 1em は何ピクセルですか?

私は長い間 CSS を使用してきましたが、Web 要素の関連属性を設定するために常に「px」を使用し...

Vue3 非同期データ読み込みコンポーネントサスペンスの使い方

目次序文コンポーネントの作成要約する序文Vue3 には多くの注目すべき機能が追加されましたが、サスペ...

MySQL ルート パスワードをリセットするときに発生する「不明な列 'password'」問題を解決する方法

夜にMACの電源を入れたところ、突然ルートアカウントがMySQLに正常にログインできなくなったため、...

Ubuntu 12.04 でカーネルツリーを構築する実装プロセスの詳細な説明

まず使用しているカーネルのバージョンを確認してくださいlin@lin-仮想マシン:~$ uname ...

Nodejs-cluster モジュールの知識ポイントの概要と使用例

面接官から「NodeJS で複数のプロセスを開始する方法を教えてください」と尋ねられることがあります...