Domanda

Voglio eseguire un processo cron che esegue la pulizia che richiede molte risorse CPU e Mysql. Voglio che funzioni solo se il server non è relativamente occupato.

Qual è il modo più semplice per determinarlo da PHP? (ad esempio, esiste una query che restituisce quante query sono state fatte all'ultimo minuto? ...)

È stato utile?

Soluzione

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

Prova ad aggiornare questa funzione alle tue esigenze

Altri suggerimenti

Su Linux è possibile ottenere il caricamento dal file / proc / loadavg .

$load = split(' ',file_get_contents('/proc/loadavg'))
$loadAvg = $load[0]

Se si tratta di un sistema Unix, analizzare l'output di uptime . Questo mostra il carico della CPU che è generalmente considerato una buona misura di "occupato". Qualsiasi cosa vicino o superiore a 1.0 significa "completamente occupato". & Quot;

Esistono tre CPU "load" volte in quell'uscita fornendo la media del carico superiore a 1, 5 e 15 minuti. Scegli quello che ha senso per la tua sceneggiatura. Definizione di "caricamento" è qui .

Probabilmente puoi usare le informazioni nei Mysql List Processes per vedere quanti sono attivi rispetto al sonno, un indicatore decente sul carico sul DB.

Se sei su Linux puoi usare la funzione Sys GetLoadAvg per vedere il carico complessivo del sistema .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top