Domanda

AGGIORNAMENTO: grazie a tutte le risposte fornite, ma riguardano il carico del sistema e non l'apache.

Il mio obiettivo è capire, all'interno dei miei script php (quelli dei modelli), quando apache ha un carico elevato ed è preferibile per deviare un po 'di traffico su lighttpd, che è qui solo per il polling lungo e per illuminare il carico dell'apache .

Ciao ragazzi, dopo questa domanda i ho iniziato a utilizzare lighttpd per un servizio di polling a lungo sul mio server, al fine di non eseguire l'annotazione di apache e il database per questo tipo di richieste.

Quindi, ho iniziato a utilizzare lighttpd anche per contenuti statici (immagini, css, js e così via).

Quindi, in realtà, ho example.com servito da apache e polling.example.com servito da lighttpd, entrambi usano memcache per ridurre gli accessi al database.

In apache, ho impostato il modulo proxy per eseguire il proxy di tutte le richieste su example.com/polling/* su polling.example.com/*

Ora, mi chiedo se c'è un modo per recuperare il carico del server apache in php, al fine di reindirizzare anche altre richieste ajax su lighttpd se apache ha un carico elevato.

Voglio dire, qualcosa del tipo:

<?php
$apache_server_load = /*hot to retrieve this value?*/;
if($apache_server_load >= $my_defined_max_load){
    $ajax_domain = '/polling';
}else{
    $ajax_domain = '';
}
?>
<script>
    [...]
    $.ajax({
        url: '<?php echo $ajax_domain; ?>/mypage.php',
        [...]
    });
    [...]
</script>

modifica sono in esecuzione su Debian

p.s: mi piacerebbe anche sapere se questa soluzione può essere un buon approccio, ma sarebbe un'altra domanda .. sentiti libero di commentare se vuoi.

È stato utile?

Soluzione

Dai un'occhiata a mod_status . Dopo averlo configurato, ti consigliamo di richiedere e analizzare

http://example.com/server-status?auto

Probabilmente vorrai memorizzare il risultato nella cache per almeno alcuni secondi, piuttosto che ripetere la stessa richiesta per ogni singola richiesta che arriva.

Altri suggerimenti

Puoi scoprire il carico generale del sistema usando la funzione php sys_getloadavg () . Questo non fornisce alcuna informazione su apache o sul server lighttpd ma potresti avere una panoramica di come è il carico su tutto il tuo server.

Non hai detto nulla sul tuo sistema. Suppongo che tu stia usando Linux o Unix. Il modo migliore per ottenere il carico corrente è eseguendo il comando di sistema uptime che fornirà una riga con un certo stato e le medie di carico.

Il calcolo esatto di questo dipende dal sistema e "alto carico" dipende anche dal sistema in uso (quanti core, l'applicazione o la CPU sono associati ...) Quindi, per ottenere il carico qualcosa di simile

preg_match("#load average: ([0-9\.]+), ([0-9\.]+), ([0-9\.]+)#", `uptime`, $matches);
print_r($matches);

potrebbe fare il trucco.

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