1.キャパシティプランニング

Linuxサーバのリソース見積もり方法に関する説明

1.1. キャパシティプランニング

1.1.1.キャパシティプラニングとは

キャパシティプランニングはシステムのリソースが将来的にも不足しないようにするための設計することをいう。 具体的には以下パラメータに注目/監視を行いリソースを見積もることで実現する。

  • CPU
  • メモリ
  • ディスク
  • ネットワーク帯域

キャパシティプランニングではシステムが最大どれだけのリソースを必要とするか測定を行うことで必要なリソースを見積もる。 また、システムパフォーマンスのボトルネックになるものには以下のようなものがある。

  • ディスクI/O
  • スワップの利用率
  • ネットワークI/O

1.1.2. パフォーマンスチューニング

パフォーマンスチューニングは効率よくシステム上のリソースを使えるようにさまざまな設定を調整すること

1.2. リソース使用率とトラブルシューティング

リソース使用率の測定では現時点における各種リソースの利用状況を計測を行う。 これはキャパシティプランニングやパフォーマンスチューニングのために実施する。

1.2.1. 総合的なリソース使用率の測定

各コマンドで確認できる項目は以下の通り。

  • CPU
    • システム全体CPU使用率の表示
      • top(htop), vmstat, iostat, mpstat ALL
    • プロセスごとのCPU使用率表示
      • top(htop) ps aux
    • CPUの平均負荷の表示
      • top(htop), uptime, w
  • 物理メモリ
    • システム全体物理メモリ使用率の表示
      • top(htop), free, vmstat, sar -r
    • プロセスごとの物理メモリ使用率の表示
      • top(htop), ps aux
  • スワップ領域
    • スワップ領域の使用状況の表示
      • top(htop), free, vmstat, sar -S, swapon -s
    • スワップイン/アウトの表示
      • vmstat
  • ディスクI/O
    • iostat, iotop, vmstat, sar -b
  • ネットワークI/O
    • iptraf, netstat -i/-s, sar -n DEV|EDEV
  • プロセスのPID
    • pstree -p, ps aux, top, lsof

topコマンド

システムリソースの使用状況やプロセスの実行状況などを継続的に表示することができるコマンド。

top [オプション]
オプション説明
-b対話モードではなくバッチモードで実行する
-d 秒表示をする間隔を指定する
-n 回指定した回数だけ更新すると終了する
-u ユーザ指定したUIDのプロセスのみ監視する
-p PID指定するPIDのプロセスのみ実行する

実行した結果は以下の通り。

TOP

htopコマンド

全体およびプロセスごとのCPUやメモリの使用状況を一定時間ごとに更新して表示するコマンド。

htop

vmstatコマンド

物理メモリやスワップ領域の詳細な情報やプロセスやCPUの統計情報などを継続的に表示するコマンド。 スワップやブロックのI/Oの値を出力可能。

vmstat [表示間隔() [回数]]

VMASTAT

iostatコマンド

CPUの利用状況およびディスクI/Oの状況などを継続的に表示するコマンド。

iostat [オプション] [表示間隔() [回数]]
オプション説明
-cCPU使用率のみを出力する
-dディスクI/O情報のみを出力する
-kブロック単位ではなくKB単位で表示する
-t時間を表示する

IOASTAT

iotopコマンド

ディスクI/Oの情報がプロセスごとに表示するコマンド。

iotop

IOTOP

sarコマンド

システムのアクティビティ情報を定期的に収集し報告するためのコマンド。 sysstatパッケージに含まれる。sysstatdが有効になると/var/log/saX(Xは数字)でログが格納される。 定期的な実行を比較的簡易に導入できる/usr/lib/sa/sa1(sadcの定期的な実行),/usr/lib/sa/sa2(sarの定期的な実行)というスクリプトが用意されている。

具体的には以下のシステムのパフォーマンスを詳細に確認するために用いられる。

  • CPUの使用率
  • メモリ使用量
  • I/O活動
  • ネットワーク使用
sar [オプション] [ 時間間隔(回数) ]
オプション説明使用例
-A全てのオプションを表示sar -A
-uCPU使用率を表示sar -u 1 3
-P指定したCPUの使用率表示sart -P 1
-r物理メモリ使用状況を表示sar -r 1 3
-bディスクI/O操作に関する情報を表示sar -b 1 3
-Sスワップ領域の使用状況を表示sar -S 1 3
-n DEVネットワークI/Oの統計を表示sar -n DEV 1 3
-n EDEVネットワークI/Oのエラー統計を表示sar -n EDEV 1 3
-dディスクI/O統計を表示sar -d 1 3
-qシステムの負荷平均値を表示sar -q 1 3
-Wスワップ領域の情報を表示するsar -W 1 3
-fデータを取り出すログファイル指定sar -f logging.log
-o [file]バイナリ形式で[file]に出力sar -o outputfile 1 3

sadfコマンド

sadcコマンドによるログをTSVやXML形式に出力するコマンド。

sadf [オプション] -- [ sarコマンドのオプション ]
オプション説明
-jJSON形式で出力
-xXML形式で出力
-tロケール日時で表示
sarコマンドに渡す

uptimeコマンド

システムの稼働時間や負荷平均などを表示するコマンド。 topの上部とほぼ同じ。

uptime

表示されるload average1, 5, 15分での平均で表示される。

wコマンド

現在ログインしているユーザとそのプロセス情報を表示するコマンド。 システムの稼働時間や負荷平均も表示できる。

w [オプション] [ユーザ名]
オプション説明
-hヘッダを非表示
-sログイン時刻、JCPU、PCPUを表示しない

1.2.2. CPU使用率の測定

psコマンド

稼働中のプロセスおよび、プロセス毎のCPUやメモリの使用量を表示するコマンド。

ps [オプション]
ps aux # すべてのプロセス表示
オプション意味
a端末を持つ全てのプロセスを表示する
eコマンド名の後に環境変数などを表示する
x端末を持たない全てのプロセスを表示する
u実行ユーザ名も表示する
r実行中のプロセスだけを表示する
l長いフォーマットで表示する
-C コマンドリスト実行ファイル名を指定して表示する
-u ユーザーリストユーザーを指定して表示する
-eすべてのプロセスを表示
-f引数を含めた完全フォーマットで表示
-lロング形式で表示
-p PIDPIDで選択
-t tty端末名で選択
-u UIDユーザIDで選択

pstreeコマンド

動作中のプロセスの親子関係をツリー状で表示するコマンド。

pstree

lsofコマンド

ファイルを開いているプロセスを表示するコマンド。

lsof

iostatコマンド

CPUの利用状況およびディスクI/Oの状況などを表示するコマンド。

iostat

mpstatコマンド

マルチプロセッサシステムのCPUの使用状況を表示するコマンド。

mpstat

1.2.3. メモリ/スワップ領域使用量の測定

freeコマンド

メモリやスワップ領域の使用状況を表示するコマンド。

free [オプション]

swaponコマンド

スワップ領域を有効/確認するコマンド。 -sオプションでスワップ領域の利用状況を確認できる。

swapon

1.2.4. ディスク使用量の測定

dfコマンド

ディスクの使用量、使用割合を計測できるコマンド。

df [オプション]
オプション意味
-aすべてのファイルシステムの情報を表示
-h1MB=1024MBで表示
-H1MB=1000KBで表示
-iiノードの使用状況を表示
-lローカルファイルシステムの表示
-mMB単位で表示
-Tファイルシステムタイプの表示

iotopコマンド

ディスクI/Oの情報がプロセスごとに確認できるコマンド。

iotop

1.2.4. ネットワークトラフィック量の測定

netstatコマンド

ネットワークの状態に関する情報を表示するコマンド。

netstat
オプション説明
-iネットワークインターフェースの状態を表示
-sプロトコル毎にパケットの送受信に関する情報を表示

ssコマンド

netstatの後継のコマンド。 -sコマンドで接続状態統計を確認可能。

ss -s

netserver/netperfコマンド

netserverコマンドはサーバ側で接続待ちするコマンド。 ポートはデフォルトで12865番が使用される。

netperfコマンドでサーバに接続し通信速度を計測する

iptrafコマンド

ネットワークのトラフィックをモニターした情報が表示できるコマンド

iptraf

1.3. リソース需要の分析と予測

1.3.1. リソース監視系ツール

リソースの監視は各種コマンドでも実行できるが、OSSのツールを用いることで効率的に監視が可能となる。 監視ツールにおいてリソースの状態の測定(監視)する場合はSNMPで行われる。

Collectd

サーバ状態を監視するデーモンプログラム。 システムにかかる負荷が少ない特徴がある。

データの監視と記録を行うには/etc/collectd.confで設定を行う。 Catciなどと合わせて使用することが多い。

なおデータの監視・記録にはプラグインを追加する必要があり、設定ファイルの/etc/collectd.confLoadPluginで指定する。

Nagios

サーバの動作確認(死活監視)、ネットワークサービス状態/リソース使用状況の監視が行えるOSSソフトウェア

MRTG

ネットワークやリソースの使用状況を監視しグラフ化するツール。 死活監視は行えない。

Catcti

ネットワークやリソースの使用状況を監視しグラフ化するツール。 WEBブラウザ上で設定を行うことができる。 MRTGより設定が容易という特徴がある。

Icinga2

Nagios互換の監視ツール。 WebAPIを使って監視情報のやりとりを行うといったNagiosにない機能を追加されている。 そのためオブジェクト管理を主体とした監視環境を提供する。

最終更新 2025.01.19: Added ss command (683d062)