Carpe Diem

備忘録。https://github.com/jun06t

dstatで見るポイント

概要

dstatがサーバの状態を調べるのに便利!というのはよく見るんですが、どこを見ればいいのかしっかり理解してなかったのでサーバの負荷状態を再現しながら見るべきポイントをまとめました。

環境

  • Ubuntu 14.04
  • dstat 0.7.2
  • stress 1.0.1

負荷試験で見るべきポイント

  1. ロードアベレージ
  2. 1が高ければCPU、ディスクI/O、メモリ
  3. 1が低ければTCPコネクション

dstatで見れるのは主に1、2です。

インストール

dstatをインストール

$ sudo apt-get install dstat

負荷状態を再現するstressをインストール

$ sudo apt-get install stress

CPU負荷(user)を上げて確認する

$ stress -c 1

最後の数字はworkerの数です。
dstatで見てみましょう。

$ dstat -tcl

f:id:quoll00:20150410095801p:plain

見るところ

ファイル書き込みの負荷を上げて確認する

$ stress -d 2 --hdd-bytes 2G

2つのプロセスが2GBずつディスクへの書き込みを行います。

$ dstat -tcdpl

f:id:quoll00:20150410100339p:plain

見るところ

  • ロードアベレージが高くなっている(待ち処理が増えている)
  • processのblockが増えている
  • CPUのwaitが増えている(待ち処理ばかりでCPUが使い切れてない)

メモリ負荷を上げて確認する

vagrant はデフォルトだとスワップを確保していないので準備します。

$ sudo -s
# fallocate -l 1024m /tmp/swap.img
# mkswap /tmp/swap.img
# chmod 600 /tmp/swap.img
# swapon /tmp/swap.img

負荷をかけます。-mオプションをつけると256Mずつメモリを専有します。以下の例では1G使用してます。

$ stress -m 4

確認します。

$ dstat -tcmspl

f:id:quoll00:20150410101203p:plain

見るところ

  • ロードアベレージが高くなっている(待ち処理が増えている)
  • processのblockが増えている
  • swapのusedが増えている
  • CPUのwaitが出ている
  • CPUのsystemが増えている

まとめ

負荷状態の理想はI/Oでロードアベレージが上がるのでなく、CPUリソースを使いきっている状態です。
その状態ならスケール可能なシステムと言えるので、サーバを増設すれば負荷が増えても対応できます。

ソース