サーバーがビジーかどうかをPHPスクリプトで確認するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/632245

  •  08-07-2019
  •  | 
  •  

質問

大量の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 関数を使用して、システム全体の負荷を確認できます。 。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top