1.キャパシティプランニング
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
- システム全体CPU使用率の表示
- 物理メモリ
- システム全体物理メモリ使用率の表示
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コマンド
システムリソースの使用状況やプロセスの実行状況などを継続的に表示することができるコマンド。
オプション | 説明 |
---|---|
-b | 対話モードではなくバッチモードで実行する |
-d 秒 | 表示をする間隔を指定する |
-n 回 | 指定した回数だけ更新すると終了する |
-u ユーザ | 指定したUIDのプロセスのみ監視する |
-p PID | 指定するPIDのプロセスのみ実行する |
実行した結果は以下の通り。
htopコマンド
全体およびプロセスごとのCPUやメモリの使用状況を一定時間ごとに更新して表示するコマンド。
vmstatコマンド
物理メモリやスワップ領域の詳細な情報やプロセスやCPUの統計情報などを継続的に表示するコマンド。 スワップやブロックのI/Oの値を出力可能。
iostatコマンド
CPUの利用状況およびディスクI/Oの状況などを継続的に表示するコマンド。
オプション | 説明 |
---|---|
-c | CPU使用率のみを出力する |
-d | ディスクI/O情報のみを出力する |
-k | ブロック単位ではなくKB単位で表示する |
-t | 時間を表示する |
iotopコマンド
ディスクI/Oの情報がプロセスごとに表示するコマンド。
sarコマンド
システムのアクティビティ情報を定期的に収集し報告するためのコマンド。
sysstat
パッケージに含まれる。sysstatdが有効になると/var/log/saX
(Xは数字)でログが格納される。
定期的な実行を比較的簡易に導入できる/usr/lib/sa/sa1
(sadcの定期的な実行),/usr/lib/sa/sa2
(sarの定期的な実行)というスクリプトが用意されている。
具体的には以下のシステムのパフォーマンスを詳細に確認するために用いられる。
- CPUの使用率
- メモリ使用量
- I/O活動
- ネットワーク使用
オプション | 説明 | 使用例 |
---|---|---|
-A | 全てのオプションを表示 | sar -A |
-u | CPU使用率を表示 | 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形式に出力するコマンド。
オプション | 説明 |
---|---|
-j | JSON形式で出力 |
-x | XML形式で出力 |
-t | ロケール日時で表示 |
-- | sarコマンドに渡す |
uptimeコマンド
システムの稼働時間や負荷平均などを表示するコマンド。
top
の上部とほぼ同じ。
load average
は1, 5, 15分での平均で表示される。
wコマンド
現在ログインしているユーザとそのプロセス情報を表示するコマンド。 システムの稼働時間や負荷平均も表示できる。
オプション | 説明 |
---|---|
-h | ヘッダを非表示 |
-s | ログイン時刻、JCPU、PCPUを表示しない |
1.2.2. CPU使用率の測定
psコマンド
稼働中のプロセスおよび、プロセス毎のCPUやメモリの使用量を表示するコマンド。
オプション | 意味 |
---|---|
a | 端末を持つ全てのプロセスを表示する |
e | コマンド名の後に環境変数などを表示する |
x | 端末を持たない全てのプロセスを表示する |
u | 実行ユーザ名も表示する |
r | 実行中のプロセスだけを表示する |
l | 長いフォーマットで表示する |
-C コマンドリスト | 実行ファイル名を指定して表示する |
-u ユーザーリスト | ユーザーを指定して表示する |
-e | すべてのプロセスを表示 |
-f | 引数を含めた完全フォーマットで表示 |
-l | ロング形式で表示 |
-p PID | PIDで選択 |
-t tty | 端末名で選択 |
-u UID | ユーザIDで選択 |
pstreeコマンド
動作中のプロセスの親子関係をツリー状で表示するコマンド。
lsofコマンド
ファイルを開いているプロセスを表示するコマンド。
iostatコマンド
CPUの利用状況およびディスクI/Oの状況などを表示するコマンド。
mpstatコマンド
マルチプロセッサシステムのCPUの使用状況を表示するコマンド。
1.2.3. メモリ/スワップ領域使用量の測定
freeコマンド
メモリやスワップ領域の使用状況を表示するコマンド。
swaponコマンド
スワップ領域を有効/確認するコマンド。
-s
オプションでスワップ領域の利用状況を確認できる。
1.2.4. ディスク使用量の測定
dfコマンド
ディスクの使用量、使用割合を計測できるコマンド。
オプション | 意味 |
---|---|
-a | すべてのファイルシステムの情報を表示 |
-h | 1MB=1024MBで表示 |
-H | 1MB=1000KBで表示 |
-i | iノードの使用状況を表示 |
-l | ローカルファイルシステムの表示 |
-m | MB単位で表示 |
-T | ファイルシステムタイプの表示 |
iotopコマンド
ディスクI/Oの情報がプロセスごとに確認できるコマンド。
1.2.4. ネットワークトラフィック量の測定
netstatコマンド
ネットワークの状態に関する情報を表示するコマンド。
オプション | 説明 |
---|---|
-i | ネットワークインターフェースの状態を表示 |
-s | プロトコル毎にパケットの送受信に関する情報を表示 |
ssコマンド
netstatの後継のコマンド。
-s
コマンドで接続状態統計を確認可能。
netserver/netperfコマンド
netserver
コマンドはサーバ側で接続待ちするコマンド。
ポートはデフォルトで12865番が使用される。
netperf
コマンドでサーバに接続し通信速度を計測する
iptrafコマンド
ネットワークのトラフィックをモニターした情報が表示できるコマンド
1.3. リソース需要の分析と予測
1.3.1. リソース監視系ツール
リソースの監視は各種コマンドでも実行できるが、OSSのツールを用いることで効率的に監視が可能となる。 監視ツールにおいてリソースの状態の測定(監視)する場合はSNMPで行われる。
Collectd
サーバ状態を監視するデーモンプログラム。 システムにかかる負荷が少ない特徴がある。
データの監視と記録を行うには/etc/collectd.conf
で設定を行う。
Catciなどと合わせて使用することが多い。
なおデータの監視・記録にはプラグインを追加する必要があり、設定ファイルの/etc/collectd.conf
でLoadPluginで指定する。
Nagios
サーバの動作確認(死活監視)、ネットワークサービス状態/リソース使用状況の監視が行えるOSSソフトウェア
MRTG
ネットワークやリソースの使用状況を監視しグラフ化するツール。 死活監視は行えない。
Catcti
ネットワークやリソースの使用状況を監視しグラフ化するツール。 WEBブラウザ上で設定を行うことができる。 MRTGより設定が容易という特徴がある。
Icinga2
Nagios互換の監視ツール。 WebAPIを使って監視情報のやりとりを行うといったNagiosにない機能を追加されている。 そのためオブジェクト管理を主体とした監視環境を提供する。