サーバーがビジーかどうかをPHPスクリプトで確認するにはどうすればよいですか?
質問
大量のCPUおよびMysqlリソースを必要とするクリーンアップを行うcronジョブを実行したい。サーバーが比較的ビジーでない場合にのみ実行したい。
PHPからそれを判断する最も簡単な方法は何ですか? (たとえば、直前に実行されたクエリの数を返すクエリはありますか?...)
解決
if (function_exists('sys_getloadavg')) {
$load = sys_getloadavg();
if ($load[0] > 80) {
header('HTTP/1.1 503 Too busy, try again later');
die('Server too busy. Please try again later.');
}
}
この関数をニーズに合わせて更新してみてください
他のヒント
Linuxでは、 / proc / loadavg
ファイルから負荷を取得できます。
$load = split(' ',file_get_contents('/proc/loadavg'))
$loadAvg = $load[0]
これがUnixシステムの場合、 uptime
の出力を解析します。これは、一般的に「ビジー」の適切な尺度と見なされるCPU負荷を示しています。 1.0
に近いまたはそれを超えるとは、「完全にビジー」という意味です。
3つのCPU「負荷」があります;その出力の時間は、1、5、および15分間の負荷平均を示します。スクリプトに適した方を選択してください。 " load"の定義こちら 。
おそらく Mysqlリストプロセスの情報を使用できます。 関数を使用して、アクティブとスリープの数を確認できます。これは、DBの負荷に関する適切な指標です。
Linuxを使用している場合は、 Sys GetLoadAvg 関数を使用して、システム全体の負荷を確認できます。 。
所属していません StackOverflow