このドキュメントではLinux CVMがCPUまたはメモリの占有率が高いためにログインできない問題のトラブルシューティングおよび対処法についてご説明します。
考えられる原因
CPUまたはメモリの使用率が高すぎると、サービスの応答速度が遅くなる、サーバーにログインできないなどの問題が起こりやすくなります。一方、CPUまたはメモリの使用率が高くなる原因としては、ハードウェアの要因、システムのプロセス、業務のプロセス、トロイの木馬やウイルスなどの要因が考えられます。 Cloud Monitor を使用して、CPUまたはメモリ使用率の閾値アラートを作成し、CPUまたはメモリ使用率が閾値を超えた場合に速やかに通知されるようにすることができます。 特定ツール
Top:Linuxシステムで一般的に使用される監視ツールです。プロセスレベルでのCPUまたはメモリ使用状況をリアルタイムに取得するために用いられます。以下の図はtopコマンドの出力情報の例です。
Topコマンドの出力情報は主に2つのパートに分かれています。上半分はCPUおよびメモリリソースの全体的な使用状況を表しています。 1行目:システムの現在時刻、現在のログインユーザー数およびシステムの負荷。
2行目:システムの総プロセス数、実行中のプロセス数、ハイバネーション、スリープ、ゾンビプロセスの数。
3行目:CPUの現在の使用状況。
4行目:メモリの現在の使用状況。
5行目:Swap領域の現在の使用状況。
下半分はプロセスの次元でリソースの占有状況を表しています。
PID:プロセスのID。
USER:プロセスの所有者。
PR:プロセスの優先順位 NI:NICE値。NICE値が小さいほど優先順位が高くなります。
VIRT:使用している仮想メモリのサイズ。単位はKB。
RES:現在使用中のメモリのサイズ。単位はKB。
SHR:使用している共有メモリのサイズ。単位はKB。
S:プロセスの状態。
%CPU:更新時間間隔内にプロセスが使用したCPU時間のパーセンテージ。
%MEM:更新時間間隔内にプロセスが使用したメモリのパーセンテージ。
TIME+:プロセスが使用したCPU時間。精度は0.01s。
COMMAND:プロセス名。
障害処理
CVMにログイン
実際のニーズに応じてログイン方式を選択し、CVMにログインします。
サードパーティのソフトウェアによってLinux CVMにリモートログインします。
ご注意:
Linux CVMがCPU高負荷状態にある場合、ログインできない状態になる可能性があります。
ご注意:
Linux CVMがCPU高負荷状態にある場合でも、コンソールで正常にログインできます。
プロセスの占有状況の確認
次のコマンドを実行し、システムの負荷を確認するとともに、%CPU
列と%MEM
列に基づいて、比較的多くのリソースを占有しているプロセスを確定します。
プロセスの分析
タスクマネージャー内のプロセスに基づき、分析とトラブルシューティングを行って、それに応じた対処法をとります。
業務プロセスが大量のCPUまたはメモリリソースを占有している場合は、業務プログラムがスペースを最適化しているかどうかを分析し、最適化またはサーバー設定のアップグレード を行うことをお勧めします。 異常なプロセスが大量のCPUまたはメモリリソースを占有している場合は、インスタンスがウイルスに感染している可能性があります。プロセスを自ら終了するか、またはセキュリティソフトを使用してウイルスの検出と駆除を行い、必要に応じてデータをバックアップし、システムの再インストールを行うことをご検討ください。
Tencent Cloudのコンポーネントプロセスが大量のCPUまたはメモリリソースを占有している場合は、さらなる問題特定と処理を行うため、チケットを提出 してご連絡ください。
一般的なTencent Cloudコンポーネントには次のものがあります。 sap00x:セキュリティコンポーネントプロセス
Barad_agent:監視コンポーネントプロセス
secu-tcs-agent:セキュリティコンポーネントプロセス
プロセスの終了
1. 分析した、リソースを占有しているプロセスの状況に応じて、終了する必要があるプロセスのPIDを記録します。
2. k
を入力します。
3. 下図のように、終了する必要があるプロセスのPIDを入力し、Enterを押します。
ここではPIDが23のプロセスの終了を例にとります。
ご注意:
Enterを押した後にkill PID 23 with signal [15]:
が表示された場合は、続けてEnterを押し、デフォルトの設定を維持します。
4. 操作が正常に完了すると、画面に Send pid 23 signal [15/sigterm]
というメッセージが表示されます。Enterを押して確認すれば完了です。
その他の関連障害
CPUがアイドル状態にもかかわらず高負荷な場合の対処
問題の説明
Load averageはCPU負荷の評価であり、その値が高いほど、そのタスクキューが長く、実行待ちのタスクが多いことを表しています。
topによる観察で、下図に類似したものが示された場合は、CPUがアイドル状態にもかかわらず、load averageが非常に高いことを表します。
処理方法
下図のように、次のコマンドを実行してプロセスの状態を確認し、D状態のプロセスがないかどうかをチェックします。
説明:
D状態とは中断できないスリープ状態を指します。この状態のプロセスは強制終了することができず、自ら終了することもできません。
プロセスにD状態が多く発生している場合は、プロセスの依存リソースを元に戻すか、またはシステムを再起動することで解決できます。
Kswapd0プロセスによるCPU占有が比較的高い場合の対処
問題の説明
Linuxシステムはページングのメカニズムによってメモリを管理すると同時に、ディスクの一部を分割して仮想メモリに充てています。一方、kswapd0はLinuxシステムの仮想メモリ管理においてページ切り替えを担当するプロセスです。システムのメモリが不足している場合、kswapd0は頻繁にページ切り替え操作を行います。ページ切り替え操作はCPUリソースを非常に消費するため、このプロセスは多くのCPUリソースを継続的に占有します。
処理方法
1. 次のコマンドを実行し、kswapd0プロセスを見つけます。
2. kswapd0プロセスの状態を観察します。
継続して非スリープ状態にあり、なおかつ実行時間が比較的長く、比較的多くのCPUリソースを継続的に占有している場合は、 ステップ3を実行し、メモリの占有状況を確認してください。 3. vmstat
、free
、ps
などのコマンドを実行し、システム内のプロセスのメモリ占有状況を照会します。
メモリの占有状況に応じて、システムの再起動または不要かつ安全なプロセスの終了を行います。si、soの値が比較的高い場合は、システムに頻繁なページ切り替え操作が存在し、現在のシステムの物理メモリがニーズを満たせなくなっていることを示しています 。システムメモリのアップグレードをご検討ください。
この記事はお役に立ちましたか?