負荷平均が25を超えることがあるシングルコアVPSがあります。それに達すると、それは耐えられないほど遅くなり、コマンドでさえdash
より速く、より少ないRAMを使用して実行されるbash
でさえ、実行に時間がかかります。高負荷の原因となっているプロセスを追跡するにはどうすればよいですか?
htop
をインストールできます。 htop
の良い点は、CPUごとの使用量と、メモリの意味のあるテキストグラフとスワップ使用量を上部に表示することです。
htop
をインストールするには:
Sudo apt-get install htop
始めよう:
htop
F6
を押してプロセスをソートし、ナビゲーションキーを使用してPERCENT_CPU
を選択し、Enterを押します。
または、この方法でtop
を使用できます( source ):
top -b -n 1 | head -n 12
以下は単に nix.SE:CPU使用率が60%を超える場合に最大CPU使用率を取得しているプロセスを見つけますか? から盗まれたものですが、もちろんこの質問に適合しています。
ps ahux --sort=-c | awk '{if($3>0.0)printf"%s %6d %s\n",$3,$2,$11}'
これにより、CPU使用率が>0.0
%のプロセスのリストが表示されます。必要に応じて、この値を変更できます。 >50.0
。各行には、CPU使用率(%)、PID、およびプロセスのファイルが含まれます。
ps ahux --sort=-c | awk 'NR<=5{printf"%s %6d %s\n",$3,$2,$11}'
これは、現在最大のCPU負荷を引き起こしている上位5(NR<=5
)プロセスを示しています。
top
コマンドを使用
top
-Linuxプロセスを表示トッププログラムは、実行中のシステムの動的なリアルタイムビューを提供します。 Linuxカーネルによって現在管理されているプロセスまたはスレッドのリストだけでなく、システムの概要情報も表示できます。表示されるシステムサマリー情報のタイプ、およびプロセスに対して表示される情報のタイプ、順序、サイズはすべてユーザーが構成可能であり、その構成は再起動後も維持できます。
昨日、私はawk
を勉強していたので、他の2つの答えを試しました。結果は次のとおりです。
ps aux
を使用して、CPU使用率が最も高いプロセスのみを取得します。
ps auxh | awk -v max=0 '{if($3>max){CPU=$3; PID=$2; NAME=$11; max=$3}} END{printf "%5s %6d %s\n",CPU,PID,NAME}'
top
を使用して、CPU使用率が最も高い3つのプロセスを取得します。
top -b -n 1 | awk 'NR>7 && NR<11 {printf "top: %5s %6d %s %s\n",$9,$1,$12,$13}'
ps aux
を使用して、CPU使用率が最も高い3つのプロセスを取得します。
ps auxh --sort=-c | awk 'NR<=3 {printf "ps: %5s %6d %s\n",$3,$2,$11}'
最後の2つのコマンドを(<command>; wait; <command>
と<command> & <command> &
で)同時に実行しようとしましたが、まったく不可能であることに気付きました:)
参照: