Unix系サーバの負荷状態を示す値としてロードアベレージ(LoadAverage)があります。この値は、実行可能なプロセス数の平均値で、1分間平均、5分間平均、15分間平均の3つの値が取得できます。実行可能なプロセスというのは、CPUが今すぐに対応できる(しなければならない)仕事のことで、この数が増えるとサーバのレスポンスは悪くなります。弊社のサーバでは、Zabbixを利用してサーバ監視をしているのですが、PHP上で直接サーバ負荷を確認したいという要望がでてきたので、ロードアベレージを取得するプログラムを作成しました。
ソースコード
<?php$uptime = exec(‘uptime’);$uptimeArray = explode(‘average:’, $uptime);$uptime = $uptimeArray[1];$uptimeArray = explode(‘,’, $uptime);var_dump($uptimeArray);
実行結果
array(3) {
[0]=>
string(5) ” 0.49″
[1]=>
string(5) ” 0.92″
[2]=>
string(5) ” 0.87″
}
このプログラムを定期的に実行し、SmartBrainの負荷の推移を記録することになる予定です。
追記
関数sys_getloadavg()を使って同様の値を取得できました。PHPの標準関数を使ったほうが安全なので、sys_getloadavg関数を使うことになりそうです。