Linux プロセスの CPU 使用率が 700% に達し、終了できない場合の解決策

Linux プロセスの CPU 使用率が 700% に達し、終了できない場合の解決策

1. 問題の発見

[root@zwlbs3 ~]# トップ

i. プロセスの CPU 使用率が 700% で、COMMAND がランダムな文字列で構成されていることがわかりました。これで終わりです! 最初に考えたのは、それを強制終了することでした。

[root@zwlbs3 ~]# kill -9 "PID"

ii. しかし、殺害された後、しばらく静かになった後、再びプロセスが開始されたことが判明しました。

注:古いイメージが再利用され、PID とコマンドが変更されています。

2. プロセスの詳細情報を表示する

[root@zwlbs3 ~]# cd /proc/748/
[root@zwlbs3 748]# ls -ial

# 「748」はプロセスのPIDです。PIDに応じて確認できます。

図に示すように:

プロセスが /dev/shm ディレクトリにあることがわかりました。/dev/shm とは何ですか?

インターネットから引用して/dev/shmについて説明しましょう

1) まず、/dev/shm はデバイス ファイルであることがわかります。/dev/shm はシステム メモリへの入り口と考えることができます。これは、物理ストレージ デバイス、つまり tmp ファイルシステムと考えることができます。このデバイスを使用して、メモリへのファイルの読み取りと書き込みを行うことで、大きなファイルの頻繁なオープン、書き込み、読み取りなどの特定の高 I/O 操作を高速化できます。

2) Oracle は /dev/shm を使用すると言われています (shitou は Oracle を使用したことがありません)。mount コマンドを使用して、現在マウントされている /dev/shm ファイルシステムを一覧表示できます。

3) メモリベースのファイルシステムであるため、システムを再起動すると /dev/shm の下のファイルは存在しなくなります。デフォルトの Linux (CentOS) /dev/shm パーティション サイズはシステムの物理メモリの 50% ですが、/dev/shm を使用するとファイル操作の効率が大幅に向上します。ただし、現在、これを使用しているソフトウェア ディストリビューションはほとんどありません (上記の Oracle を除く)。ls /dev/shm を使用して、その下にファイルがあるかどうかを確認できます。ない場合は、現在のシステムがデバイスを使用していないことを意味します。

/dev/shmディレクトリに関連ファイルがあるかどうかを確認します

[root@zwlbs3 ~]# ls -a /dev/shm/
. ..

# 関連ファイルがありません。おかしいですね。
  • crontab 関連のスケジュールされたタスクはありません。
  • which コマンドでも関連ファイルは見つかりませんでした。
  • システムログをチェックしても正常ですが、これは非常に奇妙です。
  • このプロセスに関連するファイルはほとんど見つかりませんでした。

3. 解決策

i. プロセス内のスレッド占有分析を表示する

[root@zwlbs3 ~]# top -H -p "PID" 

ii. 関連するプロセスが多数あるため、すべて終了する

iii. 数分後に再度確認し、システム負荷が正常に戻ったことを確認します。

解決したと思ったのですが、数時間後に確認したらまた表示されました。しまった。

本番環境ではサーバーを再起動するのは不便なので、再起動の方法を試すしかありませんでした。

4. 大法を再開する

サーバーを再起動してから 1 時間後に再度確認したところ、正常に戻っていました。再起動しても問題なく動作します。

この悪意のあるプログラムは何をするのでしょうか?なぜ CPU リソースだけを消費するのでしょうか?関連するファイル情報が見つからなかったため、現時点では理由は不明です。

知っている方がいたら教えてください、よろしくお願いします!

要約する

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

以下もご興味があるかもしれません:
  • LinuxのCPU負荷とCPU使用率の詳細な説明

<<:  MySQL フェイルオーバー ノート: アプリケーション対応設計の詳細な説明

>>:  JSでユーザーを追跡する方法

推薦する

React-Native環境のセットアップと基本的な紹介

環境の準備1. 環境構築React Native 中国語ウェブサイト2. 開発ツール フロントエンド...

MySQL におけるデフォルトの使用法の詳細な説明

NULL および NOT NULL 修飾子、DEFAULT 修飾子、AUTO_INCREMENT 修...

CSSは座席選択効果を実現するためにautoflow属性を使用する

1. 自動フロー属性、要素コンテンツの長さと幅が要素自体の長さと幅を超える場合、スクロールバーが表示...

数千万のデータを扱うMySQLのページングクエリのパフォーマンスを最適化する

MySQL のデータ量が多い場合、制限ページングが使用されます。ページ数が増えると、クエリの効率が低...

MySQL での and or クエリの優先度分析

これは見落とされがちな問題かもしれません。まず、次の点を明確にする必要があります。 MySQL では...

Dockerコンテナのログ処理の詳細な説明

Docker には多くのログ プラグインがあります。デフォルトでは json-file を使用します...

Navicat がデータベース データ構造をインポートする際に発生するエラー datetime(0) の SQL レポートの問題を解決します。

エラー発生: MySQL 5.7 から SQL にデータベースをエクスポートし、それを MySQL ...

nginx がドメイン名アクセス用に設定されている場合にドメイン名の後に 2 つのスラッシュ // が表示される問題の解決方法

最近、個人のウェブサイトを書き直しました。Alibaba Cloudで新しいサーバーを購入しました。...

Vueはドラッグ可能なツリー構造図を実装します

目次Vue 再帰コンポーネントドラッグイベント最近、Vue を使用して、ドラッグ可能なツリー構造図と...

Vue.jsの機能コンポーネントに関する包括的な理解

目次序文React 関数コンポーネントVue (2.x) の機能コンポーネント🌰 例: el-tab...

Nginx を使用してフロントエンドのクロスドメイン問題を解決する方法

序文Vue アプリケーションなどの静的ページを開発する場合、クロスドメインになる可能性のあるインター...

MySQL 5.7 解凍版のインストール、アンインストール、および文字化けしたコードの問題のグラフィック解決

1. 解凍版のインストール(1)圧縮パッケージをダウンロードし、ディスクの場所に解凍します。圧縮パッ...

Nginx の Docker インストールの問題とエラー分析

質問: DockerにNginxをインストールするときに次のエラーが発生しました: docker: ...