[Server] サーバー管理ツールを作る #6「LoadAverage値の取得」

2015年5月25日

Tips サーバー

サーバーの処理がアクセス数に対して間に合っていない場合、処理の行列ができます。 そんな行列の様子を値にしたのがLoadAverageの値ですが、CPU別にタスク待ち状態になっている数を表示するので、値がCPUのスレッド数を超えていると要注意です。

やりたい事

topコマンドでLAの値が取得できますが、topコマンドは重いので「/proc/loadavg」から取得できる値で代用したいと思います。

ソースコード

#!/bin/bash DIR=`dirname $0` dataFile=$DIR"/servers.list" while read line do if [ -n "${line}" ] then echo "`ssh -no 'ConnectTimeout 3' ${target} cat /proc/loadavg | awk '{print $1\"/\"$2\"/\"$3}'`"; fi done<$dataFile

解説

1, /proc/loadavgの内容を取得 2, 内容をセパレートして、[1分足 , 5分足 , 15分足]として取得する

解説

laの値が増えるということはサーバー処理が間に合っていないという事なので、値の増加を定期で計測しましょう。 通常は少数値になっていると思いますが、1以上が頻発していると、サーバー構成やプログラム処理などを見直しましょう。 ※たまにプログラムの不具合で値が跳ね上がる場合もあります。 アクセスが少ない状態の時に、無駄なモジュールやプロセスが立ち上がっていない状態にしておきましょう。

使い方

1, 「servers.list」ファイルに対象サーバーを改行区切りでいくつでも保存する。 2, 以下のコマンドを叩くだけ(任意位置から叩いてもOK) $ sh health-la.sh 192.168.33.1 : 0.20/0.27/0.20 192.168.33.2 : 0.10/0.15/0.16 192.168.33.3 : 0.09/0.15/0.16 192.168.33.4 : 0.20/0.27/0.20 192.168.33.5 : 1.10/0.65/0.36 192.168.33.6 : 0.09/0.15/0.16 LAの値で注意するポイントは、一番直近の1分足と期間の大きな5分足、15分足の値でどういう傾向になっているかで判断します。 1分足の方が小さい場合は、安定トレンドになっており、逆の場合は、アクセス過多トレンドです。 負荷分散を考慮したサーバー構成にしておくことで、こういった場合にスケールして対応することができるので、オススメします。