2010-10-07 3 views
11

Se una pagina impiega un paio di secondi per essere elaborata, vorrei che Apache registrasse quell'URL da qualche parte. È possibile? Ho un sacco di siti, quindi cercavo un modo automatico per farlo al posto del codice proprietario per ogni sito.C'è un modo per avere richieste lente di log di Apache?

risposta

21

Dai uno sguardo allo http://httpd.apache.org/docs/2.2/mod/mod_log_config.html. È possibile impostare un registro personalizzato che includa il tempo impiegato per soddisfare la richiesta.

Ad esempio:

LogFormat "%h %l %u %t \"%r\" %>s %b %D" common-time 

aggiungerebbe il tempo in microsecondi impiegato per servire la richiesta come l'ultimo campo del file di log.

Si potrebbe aggiungere che la linea al vostro httpd.conf, poi in ogni virtualhost in cui si desidera utilizzarlo, aggiungere questa riga:

CustomLog logs/access_log_time common-time 

Si potrebbe anche creare un nuovo LogFormat che contiene solo esattamente quello che vogliono, forse in questo modo:

LogFormat "\"%r\" %D" measure-time 

Nella tua virtualhost, si può avere più log, quindi si potrebbe avere:

CustomLog logs/access_log common 
CustomLog logs/access_log_time measure-time 

Detto questo, c'è un grande avvertimento . Questo misurerà solo il tempo impiegato dal server per servire la pagina. È non includere il tempo necessario per eseguire qualsiasi javascript nel browser. Se è necessario misurare il tempo di esecuzione di JavaScript, è necessario utilizzare uno strumento come firebug.

Una volta ottenuto il registro, è possibile utilizzare qualcosa come apachelog per analizzare il file di registro per ottenere solo le richieste che hanno richiesto più tempo della soglia che si desidera utilizzare.

Non sono sicuro se è possibile registrare solo le richieste lunghe e le operazioni successive del passaggio di analisi. Potrebbe essere, ma ho la sensazione che ci vorrebbe una quantità significativa di lavoro.

+0

Ci sono delle conseguenze sull'utilizzo di questo nel file di registro? Ad esempio, c'è un sovraccarico in più nel calcolo del tempo di risposta prima di sputare una linea di log? – laughingbovine

+1

Potrebbe esserci un sovraccarico, ma penso che dovresti avere del traffico piuttosto significativo prima che abbia avuto un impatto notevole sulle prestazioni del tuo sito/server. Suggerisco di usare [ab] (http://httpd.apache.org/docs/2.2/programs/ab.html) per testare prima e dopo l'implementazione di questa modifica in modo da avere un'idea di come si esibirà per voi. – bradym

+5

c'è un modo per dire, registra solo se il tempo di misura è> 1 secondo? –

Problemi correlati