会社のテストサーバー(このブログが入っているサーバー)なんかが重くなってくると、再起動したりしているわけなんですが、CPUやメモリの使用率をみたり、といったシステマティックな運用はしてないです。
本来だったらそういうログをとって、ある値が下がったらその時にメールを飛ばすとかしないといけないんですが、その理論すらよくわかっていない・・(汗)ということでサーバーの負荷調査についての実験をしようと思います。
topコマンド
まずは今のサーバーにどれぐらいの負荷がかかっているのかを把握するコマンドとしてtopコマンドがあります。
サーバーに入ってtopってうつとずらずら出てくると思います。細かい見方は下記ブログを参照。
参考リンク topコマンドで、サーバシステムと各プロセスのモニタリングを行う
蛇足ですが、このサイト使っているWordPressのテンプレートが一緒なんで一瞬自分のサイトかと思いました。
主な原因
大きく分けるとシステムの負荷が大きくなるのはCPU使用率とメモリ使用率の2種類のようです。
CPU使用率
topコマンドのload averageを見ます。少数ありで数字が3つ並んでいます。
これはCPUがしなければいけない仕事の量で、CPUのコア数よりも少なければ問題なしとされています。
数字が3つあるのはそれぞれ1分間、5分間、15分間の平均です。
ずらーっと表のようになっているのが各プロセスのタスクの状態です。ここを見てCPU使用率(%CPU)が高く、CPU使用時間が長いものはサーバーに負荷をかけている可能性が高いです。
メモリ使用率
load averageが高いのにも関わらずCPU使用率が高いプロセスがない、ということもありえます。
この場合、メモリの負荷が高い可能性が高いです。
CPUが仕事が早くてもデータを入れる先(メモリ)に問題があることがありえます。
CPUは普段の作業場所をメインメモリとして使いますが、メモリーの空き容量が不足してくると新しい作業ができなくなるので、一旦ハードディスクにデータを移動し、必要な時にはハードディスクからメモリーにデータを戻します。
この作業自体をSwap(スワップ)といい、topコマンドで見たときもMem(メモリー)のデータと並行してSwap(スワップ)という行がありますが、この作業に使用されているディスクの割合を表示しています。
この割合が高いとサーバーに負荷がかかっているということになります。MEMの行で値が高くなっているものがメモリに負荷を与えているプロセスやサービスになります。
ちなみに下記コマンドでそれぞれのパラメーターごとのソートができます。
SHIFT+T CPU使用時間順
SHIFT+P CPU使用率順
SHIFT+M メモリ使用量順
参考文献
まんがでわかるLinuxシス管系女子
http://www.amazon.co.jp/dp/4822224961
システムの過負荷の原因を切り分ける
[…] サーバーの過負荷の発見 理論編 […]