サーバーの処理がアクセス数に対して間に合っていない場合、処理の行列ができます。
そんな行列の様子を値にしたのが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分足の方が小さい場合は、安定トレンドになっており、逆の場合は、アクセス過多トレンドです。
負荷分散を考慮したサーバー構成にしておくことで、こういった場合にスケールして対応することができるので、オススメします。
0 件のコメント:
コメントを投稿