サーバ負荷分析に便利なコマンド

レンタルサーバのときは全く気にかけていませんでしたが、さくらVPSに乗り換えてからサーバ負荷にも気を遣うようになりました。ちょっとサーバの挙動がおかしいな?と思ったときに便利なコマンドも覚えたので備忘録に残しておきます。

htopコマンド

topコマンドでもいいんですが、htopコマンドの方がグラフィカルに表示できるので見やすい。topコマンドを叩いたあとにhtopコマンドを叩くと、白黒テレビからカラーテレビに変わったような、あるいはカクカクのポリゴンを初めてみたときのような、なんともいえない感動を味わえます。

yumからインストールできます。

[code] $ yum install htop [/code]

使い方はただhtopと打つだけ。

[code]$ htop[/code]

リアルタイムでCPU・メモリの使用状況やロードアベレージが確認でき、動いているプロセスも見れて、その上カーソルキーでプロセス選択してkillまでできちゃう。便利!

sarコマンド

10分置きにCPU・メモリの使用状況とかロードアベレージを保存しといてくれて、それを表示できるコマンド。htopがリアルタイム情報ならこっちは過去の記録が見れる。

これもyumからインストール可能。

[code] $ yum install sysstat [/code]

使い方は sar と打つだけでもいいんですが、各種オプションがあります。

ロードアベレージを見たいとき、

[code]$ sar -q[/code]

cpu使用率を見たいとき、

[code]$ sar -u[/code]

ディスクI/Oを見たいとき、

[code]$ sar -b[/code]

メモリ使用状況を見たいとき、

[code]$ sar -r[/code]

おまけ:負荷分析の仕方

なんかVPSが重いなーと思ったら、上の2コマンドを中心に原因を探っていくわけですが、まずはロードアベレージを見ます。ロードアベレージは実行待ちになっているプロセス数の平均値で、数値が大きいほど負荷が大きいということになります。

ロードアベレージの数値が大きければ、次にCPUとディスクI/Oを見ます。なぜなら、「実行待ちのプロセス」は「CPUが空かない」か「ディスクI/Oタスクの終了待ち」のどちらかだからです。CPUとディスクI/Oのどちらでスタックしているのかわかれば、そこからさらに原因となっているプロセスを絞り込んでいきます。

ちなみに負荷分析の仕方については、この本で勉強しました。大規模サービスを主眼とした本ですが、インフラ素人の僕がさくらVPSでWEBを運用していくのにも役立ってます。