Linuxサーバでのボトルネックを調べる方法

Linuxサーバで稼働時のボトルネックを調べます。ボトルネックとなる要因は、CPU、I/O、ネットワークなどがあります。この3つの要因を調べてみます。調査には、sysstatを使用します。

スポンサーリンク




ロードアベレージの確認

ロードアベレージとは、実行待ちプロセス数の平均値を表します。実行したくても実行できないプロセスが平均で何個あるかを表しています。このロードアベレージが低いのにスループットが上がらない場合は、ネットワークに原因が無いかを調べます。ロードアベレージが高い場合には、CPUやI/Oを調査します。ロードアベレージを確認するには、「sar -q」コマンドを実行します。表示される内容は、次のような内容です。

表記 内容
runq-sz 実行キューの長さ (実行時間を待っているプロセス数)
plist-sz プロセスリスト中のプロセスとスレッド数
ldavg-1 過去1分間のシステムロードアベレージ
ldavg-5 過去5分間のシステムロードアベレージ
ldavg-15 過去15分間のシステムロードアベレージ

CPU使用率とI/O待ち率の確認

ロードアベレージが高い場合、CPUとI/Oどちらがボトルネックになっているかを調べます。調べるには「sar」コマンドを実行します。実行結果は、次のとおりです。

表記 内容
%user アプリケーションの実行に使用されたCPU使用率
%nice 「nice」コマンドにて優先度を変更したアプリケーションの実行に使用されたCPU使用率
%system カーネルの実行に使用されたCPU使用率
%iowait ディスクI/O要求がある間のCPUが、アイドル状態である時間のパーセント表示
%steal 仮想プロセッサを実行している間、強制的に待たされている時間のパーセントを表示
%idle CPUがアイドル状態で、ディスクI/O要求がない状態の時間のパーセント表示

CPU負荷が、高い場合には、以下の手順で原因を調査します。

  1. 「top」コマンドや「sar」コマンドでユーザプログラム側が原因なのか、システムプログラムが原因なのかを調べる。
  2. 「ps」コマンドで見えるプロセスの状態や、CPU使用時間などを見ながら、原因となるプロセスと特定する。

ディスクI/Oの負荷が高い場合は、スワップが発生していないかを確認します。「sar -W」コマンドを実行します。実行結果は、次のとおりです。

表記 内容
pswpin/s 1秒間にスワップインしているページ数
pswpout スワップアウトしているページ数

スワップが発生している場合は、以下の手順で原因を調査します。

  1. 「ps」コマンドで、特定プロセスが極端にメモリを消費していないかを確認する。
  2. 搭載メモリが不足している場合はメモリ増設で対応する

メモリの使用上状況を確認するには、「sar -r」コマンドを実行します。

表記 内容
kbmemfree 物理メモリの空き容量
kbmemused 使用中の物理メモリ量
memused 物理メモリ使用率
kbbuffers カーネル内のバッファとして使用されている物理メモリの容量
kbcached カーネル内でキャッシュとして使用されている物理メモリの容量
kbswpfree スワップ領域の空き容量
kbswpued 使用中のスワップ領域の容量
スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする