はじめに: Linux は現在広く使用されていますが、パフォーマンス監視の指標は I/O、メモリ、TCP 接続数、ネットワークにすぎません。 、プロセスまたはスレッド 使用されるコマンドは、iostat、vmstat、sar、mpstat、netstat、ss、iftop、free、pstree/ps、pidstat、top、(uptime) 以下で詳しく説明します。
1. Disk I/ O (iostat)
私たちのマシン上の多くのデータはディスクに保存されており、読み取ったデータの多くはディスクとやり取りする必要がありますが、ディスクは低速デバイスでもあり、多くの場合ブロックされる可能性があります。したがって、ディスク I/O の監視は非常に重要です。ディスクの状態を診断するには iostat を使用します。使用されるマシンは Tencent Cloud ホストです。
ps: デバイスの 1 秒あたりの送信数。1 秒あたりの I/O リクエストの数を示します。
Blk_read/s: 1 秒あたりにデバイスから読み取られたデータの量
Blk_wrtn/s: 1秒あたりのデバイス書き込みデータ量
Blk_read: 読み取られたデータの合計量
Blk_wrtn: 書き込まれたデータの合計量
%user: ユーザーモードプロセスによって使用されるCPU負荷を表します
%nice: 優先プロセスの使用量を表しますCPU 負荷
%system: カーネル状態プロセスによって使用される CPU 負荷を表します
%iowait: CPU が I/O を待機しているときの CPU 負荷を表します
%steal: スチールされた CPU 負荷を表し、これは次で使用されます仮想化テクノロジーで使用されます
%idle: アイドル状態の CPU 負荷を表します
iostat には、拡張情報を表す一般的に使用されるパラメーター オプション -x もあります
rrqm/s: このデバイスに関連する 1 秒あたりの数読み取りリクエストがマージされました (複数の I/O マージ操作)
wrqm/s: このデバイスに関連する 1 秒あたりの書き込みリクエストの数がマージされました
r/s: 1 秒あたりに送信されたデバイスの読み取りリクエストの数
w/s: 1 秒あたりにデバイスに送信された書き込みリクエストの数
rsec/s: 1 秒あたりのデバイス セクターの読み取り数
wsec/s: 1 秒あたりのデバイス セクターへの書き込み数
avgrq- sz: 平均リクエストセクターサイズ
avgqu-sz: 平均リクエストキュー長
await: 各I/Oリクエストの平均処理時間(待ち時間)
r_await: 各read I/Oリクエストの平均処理時間
w_await: 各書き込み I/O リクエストの平均処理時間
svctm: 各 I/O オペレーションの平均サービス時間を示します。 svctm 値と await 値が非常に近い場合は、I/O の待機がほとんどないことを意味します。await 値が svctm 値よりもはるかに大きい場合は、I/O キューの待機時間が長すぎることを意味します。
%util: I/O 操作の処理に費やされた合計時間、つまり消費された CPU の割合があります。たとえば、統計時間間隔が 1 秒の場合、デバイスは 0.65 秒間 I/O を処理し、0.35 秒間アイドル状態になります。このデバイスの %util=0.65/1=65% は、通常、このパラメータが 100% の場合、デバイスがフル容量に近い状態で動作していることを意味します (もちろん、%util が複数のディスクがある場合でも)。 100%、ディスクの同時実行能力のため、ディスク使用量が必ずしもボトルネックに達するとは限りません)
2. メモリ (空き)
Linux システムでは、メモリ使用量をチェックします。 free コマンドを使用して、
の最初の行の情報を表示します (オペレーティング システム レベルから考えることができます)
total: 物理メモリの合計サイズ
used: 割り当てられたサイズ
free: そうでない割り当てられたサイズ
shared: 主に IPC 通信に使用される共有メモリのサイズ
buffers: ブロックデバイスのバッファリングに使用される
cached: ファイルコンテンツのバッファリング、つまりキャッシュに使用される
「キャッシュ」とは分割することメモリ領域内のブロック。プロセスとハードディスクの間のバッファとして、プロセスはデータをキャッシュに書き込みます。データを読み取る必要がある場合、データは「ダート」キャッシュではなく「ハイウェイ」キャッシュから直接読み取られます。ロード」ハードディスク。読み取りにより、パフォーマンスが大幅に向上します
ここのバッファには実際にデータのメタデータ (ディレクトリ名、ファイル サイズ、ファイル ストレージ ブロック、変更時刻、アクセス許可など) が保存され、キャッシュにはデータが保存されます。最近読み取ったドキュメントのデータ。
情報の 3 行目 (アプリケーション レベルから考えることができます)
ここでの -/+ バッファー/キャッシュは、それぞれ -buffers/cache と +buffers/cache です
-buffers/cache = used (いいえ1行) -buffers-cached は、実際には現在のプログラムによって「実際に使用されている」「物理メモリ」です
+buffers/cache =buffers+cachedとして使用するためにシステムに一時的に「貸し出される」メモリのサイズを意味します。 「バッファ」
used=(+buffers/cached)+(-buffers/cached)
したがって、アプリケーションレベルから見ると、利用可能なメモリ = 空きメモリ+バッファ+キャッシュ
次の方法で詳細情報を確認できます。 .
~ 猫 /proc/meminfo
MemTotal: 1020128 kB
MemFree: 670772 kB
バッファ: 97780 kB
キャッシュ済み: 100980 kB
SwapCached: 0 kB
アクティブ: 164988 kB
非アクティブ: 117296 kB
アクティブ(anon): 83536 kB
非アクティブ(anon): 160 kB
アクティブ(ファイル): 81452 kB
非アクティブ(ファイル): 117136 kB
不可避: 0 kB
ロック済み: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
ダーティ: 92 kB
ライトバック: 0 kB
AnonPages: 83504 kB
マップ済み: 17500 kB
シュメム: 172 kB
スラブ: 46696 kB
S回収可能: 28652 kB
S未回収: 18044 kB
KernelStack: 1744 kB
PageTables: 2636 kB
NFS_Unstable: 0 kB
バウンス: 0 kB
ライトバックTmp: 0 kB
CommitLimit: 510064 kB
Committed_AS: 343800 kB
VmallocTotal: 34359738367 kB
Vmallocused : 7112 kB
VmallocChunk: 34359727304 kB
ハードウェア破損: 0 kB
AnonHugePages: 36864 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k : 8184 kB
DirectMap2M: 1040384 kB
三,CPU(dstat,mpstat)
首先我们使用dstatコマンド来查看下我们的CPU情况,他能够实時のお知らせ、
每2秒出力1回、1共出力10回
cpu:hiq、siq分別はハード割り込みおよび软割り込み次数
system:int、csw分別はシステムの割り込み次数(割り込み)および上下文切换次数(コンテキストスイッチ) )。のネットワーク情報
%nice 内部時間セグメント里、nice值は负进程のCPU時間(%) (nice/合計)*100
%sys 内部時間セグメント里、内部核時間(%) (システム/合計)*100
%irq 内部時間区間里、ハード中断時間(%) (irq /total)*100
%soft 内部時間区間で、软中断時間(%) (softirq/total)*100
四,TCP 接続数(ss,netstat)
ss はソケットの統計の書き込み、名前考え ss コマンドはソケットの情報を取得するために使用され、他のユーザーが表示および表示できますnetstat に似た内容ですが、netstat よりも高性能であり、ソケットの接続数が非常に多い場合は、netstat コマンドを使用するかどうかに関係なく、内部コアで接続数cat が表示されます。 /proc/net/tcp の時間は都市が非常に遅いです。
ss が高速である理由は、TCP プロトコルの tcp_diag を使用するためです。tcp_diag は、Linux カーネルで直接の情報を取得できるため、ss の効率が保証されます。
netstat と ss を比較できます。写真と真実があります
netstat コマンドの時間は ss コマンドの時間よりも明らかに遅いです
netstat コマンド
システム内のデーモンプロセスへの接続ステータス情報と監視対象のポート番号を確認できます
-t:TCP接続を示します
-u:UDP接続を示します
-n:数値形式で情報を表示することを示します
-p: リスニングポート番号の表示を示します
システム内のデーモンプロセスの監視ステータスを表示します
Stateステータスの表示が確認できます
ssコマンド
現在のサーバーのネットワーク接続統計: ss - s
他の ss の使用法は netstat と同じです
5. ネットワーク (iftop)
iftop -i eth0 を使用します
Ctrl+c を使用して終了し、表示を終了します
-i パラメーターを使用して、さまざまなネットワークカードのトラフィック情報を監視できます。iftop のどのインターフェイスで p を押してポートのトラフィック情報を表示できます
。 6. プロセス情報 (ps/pstree、top、pidstat)
プロセス ツリーを表示するには pstree を使用します。すべてのプロセスは init プロセスの子プロセスです
ps コマンド
などの特定のプロセスを表示するにはMySQL プロセスでは ps aux mysqld または ps -elf mysqld を使用できます。Linux は Unix からいくつかのアイデアを継承しているため、この 2 つに本質的に違いはありません。1 つは Unix の Sys-v スタイルで、もう 1 つは BSD スタイルです
彼の情報を詳細に見ることができます
pidstat コマンド
pidstat を使用して、各プロセスの pid ステータス情報とそれが占有する CPU 情報を表示できます
総合的な表示 (vmstat、top、sar)
メモリ、スワップパーティション、I/O、CPU、およびプロセスコンテキストの切り替え時間が表示されます
top コマンド
このインターフェイス内:
m を押してメモリ使用量で並べ替えます
P を押してCPU 使用率で並べ替えます
M を押して常駐メモリ サイズで並べ替えます
k を押してプロセスを強制終了します
sar コマンド
場合によっては、Linux の起動にかかった時間をカウントする必要があるかもしれません。 uptime コマンドはこの情報を表示します。top も表示できます
uptime コマンド
top コマンドは
を表示します