オペレーティング システムの負荷ステータスはアプリケーションのリソース使用状況を反映しており、そこからアプリケーション最適化のボトルネックを見つけることができます。
システム負荷平均とは、実行中または中断されないプロセスの平均数を指します。 \
は実行中です。これは、CPU を占有している実行状態、または CPU スケジューリングを待機している準備完了状態を意味します。 \
「邪魔しないでください、ブロックを示し、I/O を待機しています」
推奨事項: [linux ビデオ チュートリアル]
Linux システムでは、通常、負荷条件には uptime コマンドが使用されます (w コマンドや top コマンドも使用できます)*
1. uptime コマンド
$ uptime\ 16:33:56 up 69 days, 5:10, 1 user, load average: 0.14, 0.24, 0.29
上記の情報は次のように分析されます:
16:33:56 : 現在時刻
up 69 days, 5:10 : システムは 69 日間 5 時間 10 分稼働しています
1 ユーザー :現在 1 人のユーザーがシステムにログインしています 負荷平均: 0.14、0.24、0.29: 過去 1 分、5 分、および 15 分間のシステムの平均負荷
負荷平均: 0.14、0.24、0.29 : 過去 1 分、5 分、15 分のシステムの平均負荷 負荷
平均負荷分析
論理 CPU コア数の表示:
$ grep 'model name' /proc/cpuinfo | wc -l\ 1\
実行結果は、論理 CPU コアが 1 つあることを示しています。 1 つの CPU コアを例として、CPU が 1 分あたり最大 100 プロセスを処理すると仮定します –
load=0、CPU
load=0.5 を必要とするプロセスはなく、CPU は 50 プロセスを処理します
load=1、CPU は 100 プロセスを処理しました。現時点では CPU は完全に占有されていますが、システムは引き続きスムーズに動作します。
load=1.5、CPU は 100 プロセスを処理しました、まだ 50 個のプロセスが削除され、CPU 処理を待機しています。この時点で、CPU はすでに過負荷になっています。
システムがスムーズに動作するためには、負荷値が 1.0 を超えてはなりません。そのため、どのプロセスも待つ必要がなく、すべてのプロセスが初めて処理され、すぐに処理されます。 \
明らかに 1.0 が重要な値であり、この値を超えるとシステムは最適な状態にはなりません。一般に 0.7 が理想的な値です。 \
さらに、負荷値の健全性ステータスは、システム内の CPU コアの数にも関連します。CPU コアの数が 2 の場合、負荷値の健全性値は 2 である必要があります。 、 等々。 \
評価システムの負荷は通常、15 分以内の平均負荷値を使用します。
2. w command
$ w\ 17:47:40 up 69 days, 6:24, 1 user, load average: 0.46, 0.26, 0.25\ USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT\ lvinkim pts/0 14.18.144.2 15:55 0.00s 0.02s 0.00s w
1 行目: 稼働時間 1 と同じ。 \
2 行目の下には、現在ログインしているユーザーのリストが表示されます。
3. トップ コマンド
$ top\ top - 17:51:23 up 69 days, 6:28, 1 user, load average: 0.31, 0.30, 0.26\ Tasks: 99 total, 1 running, 98 sleeping, 0 stopped, 0 zombie\ Cpu(s): 2.3%us, 0.2%sy, 0.0%ni, 97.4%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st\ Mem: 1922244k total, 1737480k used, 184764k free, 208576k buffers\ Swap: 0k total, 0k used, 0k free, 466732k cached\ \ PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND \ 1 root 20 0 19232 1004 708 S 0.0 0.1 0:01.17 init \ 2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd \ ...
1 行目: 稼働時間 1 と同じ。
行 2: プロセス番号情報。
タスク: 合計 99: 合計 99 のプロセスがあります
1 実行中: 1 つのプロセスが CPU を占有しています
98 スリープ: 98 のスリープ プロセス
0 停止: 0 停止プロセス
0 ゾンビ: 0 ゾンビ プロセス
行 3: CPU 使用率
us (ユーザー): 非適切なユーザー プロセスによって占有されています CPU 比率
sy (システム): CPU を占有しているカーネルとカーネル プロセスの比率
#ni (nice): ユーザー プロセス空間で優先順位が変更されたプロセスによって占有されている CPU の比率
id (idle): CPU アイドル率。システムが遅く、この値が高い場合、システムが遅い理由は高い CPU 負荷ではないことを意味します。
wa (iowait) : I/O 操作の実行を待機している CPU の時間比率。このインジケーターはディスク I/O 問題のトラブルシューティングに使用でき、通常は wa と id を組み合わせて
hi (ハードウェア IRQ) を決定します。 CPU がハードウェア割り込みを処理するのに費やした時間の割合
si (ソフトウェア割り込み): CPU がソフトウェア割り込みを処理するのに費やした時間の割合
st (スチール): 経過時間、仮想マシン内の他のタスクが占める CPU 時間の割合
注意が必要な状況:
ユーザー プロセスの割合が高く、I/O 操作が低いことを意味します。システムが遅くなる理由は、プロセスが多くの CPU を消費するためです。通常、アイドル率 ID が低くなります。これは、CPU のアイドル時間が非常に短いことを意味します。
I/O 動作 wa が低く、アイドル率 id が高い場合、CPU リソースのボトルネックの可能性を排除できます。
I/O 操作が高い: I/O が多くの CPU 時間を消費していることを意味します。スワップ スペースの使用状況を確認する必要があります。スワップ スペースはディスク上にあり、パフォーマンスは大幅に向上します。メモリが使い果たされたら、スワップの使用を開始します。スペースを使用すると、パフォーマンスに重大な影響を与えるため、より高いパフォーマンス要件を持つサーバーの場合は、通常、スワップ スペースをオフにすることをお勧めします。一方、メモリは十分にあるのに wa が高い場合は、どのプロセスが I/O リソースを多く消費しているかを確認する必要があります。
実際には、より多くの負荷状況を柔軟に判断できます。
4. iostat コマンド
iostat コマンドは、システム パーティションの IO 使用状況を確認できます
$ iostat \ Linux 2.6.32-573.22.1.el6.x86_64 (sgs02) 01/20/2017 _x86_64_ (1 CPU)\ \ avg-cpu: %user %nice %system %iowait %steal %idle\ 2.29 0.00 0.25 0.04 0.00 97.41\ \ Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn\ vda 1.15 3.48 21.88 21016084 131997520
注目すべき IO インジケーター:
デバイス: ディスク名
tps: 1 秒あたりの I/O 転送リクエスト
Blk_read/s: 1 秒あたりに読み取られるブロック数ブロック サイズを表示するには、コマンドtune2fs
## を参照してください。 #Blk_wrtn/s: 1 秒あたりに書き込まれるブロック数Blk_read: 合計で読み取られるブロック数–Blk_wrtn: 合計で書き込まれるブロック数5 . iotop コマンドiotop このコマンドは、top コマンドに似ていますが、各プロセスの I/O ステータスを表示するため、負荷の高い I/O 操作を行うプロセスを特定するのに役立ちます。 \# iotop\ Total DISK READ: 0.00 B/s | Total DISK WRITE: 774.52 K/s\ TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND \ 272 be/3 root 0.00 B/s 0.00 B/s 0.00 % 4.86 % [jbd2/vda1-8]\ 9072 be/4 mysql 0.00 B/s 268.71 K/s 0.00 % 0.00 % mysqld\ 5058 be/4 lvinkim 0.00 B/s 3.95 K/s 0.00 % 0.00 % php-fpm: pool www\ 1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init
很多时候当检测到或者知道历史的高负载状况时,可能需要回放历史监控数据,这时 sar 命令就派上用场了,sar 命令同样来自 sysstat 工具包,可以记录系统的 CPU 负载、I/O 状况和内存使用记录,便于历史数据的回放。
sysstat 的配置文件在 /etc/sysconfig/sysstat 文件,历史日志的存放位置为 /var/log/sa\
统计信息都是每 10 分钟记录一次,每天的 23:59 会分割统计文件,这些操作的频率都在 /etc/cron.d/sysstat 文件配置。\
七、sar 命令
使用 sar 命令查看当天 CPU 使用:
$ sar\ Linux 2.6.32-431.23.3.el6.x86_64 (szs01) 01/20/2017 _x86_64_ (1 CPU)\ \ 10:50:01 AM CPU %user %nice %system %iowait %steal %idle\ 11:00:01 AM all 0.45 0.00 0.22 0.40 0.00 98.93\ Average: all 0.45 0.00 0.22 0.40 0.00 98.93
使用 sar 命令查看当天内存使用:
$ sar -r\ Linux 2.6.32-431.23.3.el6.x86_64 (szs01) 01/20/2017 _x86_64_ (1 CPU)\ \ 10:50:01 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit\ 11:00:01 AM 41292 459180 91.75 44072 164620 822392 164.32\ Average: 41292 459180 91.75 44072 164620 822392 164.32
使用 sar 命令查看当天 IO 统计记录:
$ sar -b\ Linux 2.6.32-431.23.3.el6.x86_64 (szs01) 01/20/2017 _x86_64_ (1 CPU)\ \ 10:50:01 AM tps rtps wtps bread/s bwrtn/s\ 11:00:01 AM 3.31 2.14 1.17 37.18 16.84\ Average: 3.31 2.14 1.17 37.18 16.84
更多 sar 用法,请 man sar 。
以上がLinux でシステム負荷を確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。