8

多くの CPU と Mysql リソースを消費するクリーンアップを行う cron ジョブを実行したいと考えています。サーバーが比較的ビジーでない場合にのみ実行したい。

PHPからそれを判断する最も簡単な方法は何ですか? (たとえば、過去 1 分間に実行されたクエリの数を返すクエリはありますか? ...)

4

4 に答える 4

12
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.');
    }
}

この機能をニーズに合わせて更新してみてください

于 2009-03-10T21:05:23.127 に答える
4

これが Unix システムの場合は、 の出力を解析しますuptime。これは、一般に「ビジー」の適切な尺度と見なされる CPU 負荷を示します。近くまたはそれ以上の1.0ものは、「完全に忙しい」ことを意味します。

その出力には、1、5、および 15 分の負荷平均を示す 3 つの CPU "負荷" 時間があります。スクリプトに適したものを選択してください。「負荷」の定義はこちら

于 2009-03-10T21:01:45.927 に答える
4

Linux では、/proc/loadavgファイルから負荷を取得できます。

$load = split(' ',file_get_contents('/proc/loadavg'))
$loadAvg = $load[0]
于 2009-03-10T21:12:39.380 に答える
2

おそらく、Mysql List Processes関数の情報を使用して、アクティブなプロセスとスリープしているプロセスの数を確認できます。これは、DB の負荷に関する適切な指標です。

Linux を使用している場合は、Sys GetLoadAvg関数を使用してシステム全体の負荷を確認できます。

于 2009-03-10T21:07:07.507 に答える