この記事は本の第13章から抜粋したものです Linux in Action、Manningによって公開されました。
Linuxマシンのパフォーマンスが不安定または異常に遅いですか?増大する需要が利用可能なリソースを上回っているのではないかと思いますか?自分自身に尋ねるべきいくつかの質問があります:
- CPUとメモリのリソースを使い果たすのにどれくらい近づいていますか?
- シャットダウンされる可能性のある不必要に実行されているものはありますか?
- 知らないうちに不正に実行されているものはありますか?
その他のLinuxリソース
- Linuxコマンドのチートシート
- 高度なLinuxコマンドのチートシート
- 無料のオンラインコース:RHELの技術概要
- Linuxネットワーキングのチートシート
- SELinuxチートシート
- Linuxの一般的なコマンドのチートシート
- Linuxコンテナとは何ですか?
- 最新のLinux記事
どこで答えを探すべきですか? トップ プログラムは始めるのに最適な場所です。システムで実行されているプロセスの豊富な自己更新の概要を提供できます。
次の図は、top
の一般的な画面を示しています データ。最初の行には、現在の時刻、最新のシステムブートからの経過時間、現在ログインしているユーザーの数、および最後の1分、5分、および15分の負荷平均が表示されます。この情報は、uptime
を実行して返すこともできます。 。
パフォーマンスの問題を解決しようとしているため、最も関心のあるデータの列は%CPU
です。 (特定のプロセスで現在使用されているCPU容量の割合)および%MEM
(メモリ容量のパーセンテージ)。特に、リストの一番上に表示されるプロセスに注意する必要があります。
この場合、MySQLデーモンがサーバーのCPUの4.3%を使用しており、次の列から、そのメモリの13%を使用していることがわかります。その行を左にたどると、プロセスID(PID)が1367
であることがわかります。 プロセスはmysql
によって「所有」されています ユーザー。
おそらく、このプロセスは正当化できるよりも多くのリソースを消費しており、犠牲にする必要があると結論付けるでしょう(より大きな利益のために、あなたは理解しています)。そのtop
ディスプレイはあなたがそれを殺すために必要なすべてをあなたに与えました。 MySQLはsystemd(systemdを使用するディストリビューション)によって管理されるサービスであるため、最初に選択するのはsystemctl
を使用することです。 アプリケーションデータを危険にさらすことなく、プロセスを穏やかに停止します。
systemctl stop mysqld
シャットダウンするプロセスがsystemdによって管理されていない場合、または問題が発生してsystemctl
が発生した場合 停止に失敗した場合は、kill
のいずれかを使用できます またはkillall
プロセスを排除します。一部のシステムでは、killall
をインストールする必要があります psmisc
の一部として パッケージ。 PIDをkill
に渡します このように:
kill 1367
killall
一方、IDではなくプロセス名を使用します。
killall mysqld
殺すか殺すか、それが問題です 。実際、答えは明らかです。 kill
killall
が実行されている間、PIDに基づいて単一のプロセスをシャットダウンします。 実行中の特定のプログラムのインスタンスを殺します。したがって、2つまたは3つの別々のMySQLインスタンスがあった場合(おそらく別々のユーザーに属している場合)、すべてが停止します。 killall
を起動する前に 、「巻き添え被害」になる可能性のある、実行したい同様の名前のプロセスがないことを確認してください。
もちろん、systemctl disable
も実行する必要があります 次回の起動時にプロセスが再起動しないようにするため。
systemctl disable mysqld
解読トップ
それらが必要になった場合に備えて、top
の3行目 少し前に見た出力は、他の多くのCPUメトリックの時間値(パーセンテージ)を示します。そこに表示される頭字語の雑然とした概要は次のとおりです。
us | 優先度の高い(ニックのない)プロセスの実行時間 |
sy | カーネルプロセスの実行時間 |
ni | 優先度の低い(適切な)プロセスの実行時間 |
id | アイドリングに費やした時間 |
wa | I/Oイベントが完了するのを待つ時間 |
hi | ハードウェア割り込みの管理に費やした時間 |
si | ソフトウェア割り込みの管理に費やした時間 |
st | ハイパーバイザー(ホスト)によってこのVMから盗まれた時間 |
top
キーボード入力により、リアルタイムで表示をカスタマイズできます。 h
と入力します 詳細については、
問題が発生する(CPU負荷をシミュレートする)
top
を見たくてたまらない 実際に動作していますが、すべてが順調に進んでいることをご存知でしょうか?
危機レベルのCPU過負荷をシミュレートしてみませんか?子供と同じように、yes
停止するように指示されるまで、(デジタル)ノイズを継続的に出力します。考え直してみると、それは子供とはまったく異なります。
このコマンドは、そのノイズを使い捨ての/dev/null
にリダイレクトします ファイルと&
文字はプロセスをバックグラウンドにプッシュし、コマンドラインの制御をあなたに戻します。圧力を上げるには、コマンドをさらに数回起動します。
$ yes > /dev/null &
それは彼らを忙しくしておくべきです。すべてが実行されている間、top
をご覧ください 何が起こっているかを確認します。また、他のアプリケーションを実行して、速度を落とすのにどれだけかかるかを確認することもできます。完了したら、killall
を実行します すべてのyes
をノックオフします 一度にセッション。
$ killall yes