前提条件
データ収集を開始する前に、以下の条件がすべて整っていることを確認します。
- 各サーバーへの SSH 接続が可能なこと
- sysstat パッケージがインストール済み(mpstat / iostat / vmstat を含む)
- 収集データを保存できる十分なディスク空き容量があること
- 収集時間帯・負荷条件を事前に決定していること(本番負荷時間帯、または負荷試験のシナリオ)
収集タイミングを事前に合意しておかないと、全サーバーのデータを「同じ負荷状況下」で比較できなくなります。
sysstat インストール確認
mpstat / iostat は sysstat パッケージに含まれています。インストールされていない場合は以下でインストールします。
# RHEL / CentOS / Rocky Linux
sudo yum install -y sysstat
# Ubuntu / Debian
sudo apt install -y sysstat
# インストール確認
mpstat -V
iostat -V
収集コマンド(5 秒 × 12 回 = 1 分)
以下のコマンドを全サーバーで同時に実行します。バックグラウンド実行(&)にして並列取得するのがポイントです。
################################
# 収集用ディレクトリを作成
################################
mkdir -p ./perf_data
################################
# ① CPU 使用状況(mpstat)
################################
mpstat -P ALL 5 12 > ./perf_data/mpstat.txt &
################################
# ② メモリ使用状況(free)
# 5秒ループで取得
################################
while true; do
echo "--- $(date +%H:%M:%S) ---"
free -m
sleep 5
done >> ./perf_data/free.txt &
################################
# ③ ディスク I/O(iostat)
################################
iostat -xz 5 12 > ./perf_data/iostat.txt &
################################
# ④ システム全体(vmstat)
################################
vmstat 5 12 > ./perf_data/vmstat.txt &
# バックグラウンドジョブの確認
jobs
⚠free.txtの収集ループは手動で停止する必要があります。テスト終了後にkill %2(ジョブ番号を確認して)で停止してください。
アクセスログの保存
Web サーバー側では、収集開始時刻と終了時刻のアクセスログを別途保存しておきます。
# Apache の場合
sudo cp /var/log/httpd/access_log \
./perf_data/access_$(date +%Y%m%d_%H%M).log
# Nginx の場合
sudo cp /var/log/nginx/access.log \
./perf_data/access_$(date +%Y%m%d_%H%M).log
# ログのフォーマット確認(処理時間フィールドの位置を把握)
head -3 /var/log/httpd/access_log
収集時のポイント
収集間隔と収集時間の目安
| 項目 | 推奨値 | 理由 |
|---|---|---|
| 収集間隔 | 5 秒 | 短すぎると高負荷に、長すぎると瞬間的な問題を見逃す |
| 収集時間 | 10〜30 分 | 負荷シナリオのピーク区間をカバーできる長さ |
| 取得タイミング | 負荷テスト中・本番ピーク時 | 平常時のデータでは問題が現れないことが多い |
複数サーバーの時刻合わせ
Web / APL / DB サーバーのデータを後で比較するには、各サーバーの時刻が同期されていることが前提です。NTP の設定を事前に確認しておきましょう。
# 時刻確認
date
timedatectl status
# NTP 同期状態確認
chronyc tracking 2>/dev/null || ntpstat
収集データのファイル構成例
./perf_data/
├── mpstat.txt # CPU 使用状況
├── free.txt # メモリ使用状況
├── iostat.txt # ディスク I/O
├── vmstat.txt # システム全体
└── access_20260524_1430.log # アクセスログ