前提条件

データ収集を開始する前に、以下の条件がすべて整っていることを確認します。

  • 各サーバーへの 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   # アクセスログ