Come posso riprodurre nuovamente i log di accesso di Apache sui miei server per eseguire test di carico nel mondo reale?


13

Ho esaminato gli strumenti per testare i server HTTP? ma non riuscivo a vedere come riprodurre i miei log esistenti in nessuno di questi strumenti. Ho un bug che si verifica solo in determinate operazioni di caricamento che i miei elementi di test JMeter e AB esistenti non sono in grado di riprodurre.

Voglio semplicemente dare allo strumento access_logs e farlo riprodurre, sia più velocemente che alla stessa velocità.

Risposte:


14

È possibile utilizzare il componente Campionatore log di accesso di Jmeter .

C'è un breve tutorial sul suo utilizzo in questo PDF .


3
Ho provato questo e ovviamente devo essere un idiota perché non sono riuscito a farlo funzionare bene. Ho finito per usare lo script Python su insom.me.uk/z/2009/02/…
Stewart Robinson,

Poiché il link originale è morto, ecco il link in archive.org: web.archive.org/web/20090305084634/https://www.insom.me.uk/…
Walty Yeung,

Ok, nel caso in cui altri lo trovassero, questo script ha un problema con il threading. Potrebbe essere necessario sostituire threadlib con threadinglib ( stackoverflow.com/questions/19558401/… )
Walty Yeung,

1

Supponendo che tutto ciò che hai nel tuo registro di accesso siano richieste GET, e non ti dispiace che le richieste si accumulino al limite della risoluzione dei timestamp nei registri, circa 10 righe di $ SCRIPTING_LANGUAGE dovrebbero fare il trucco. POST, cookie, autenticazione HTTP e tempistiche più sottili sono un esercizio molto più interessante.


-1

Ciò richiederebbe un programma, ad esempio un'app di test del carico, che supporti la riproduzione del registro http. Una di queste app è HTTPerf ( https://github.com/httperf/httperf ).

Un articolo informativo è disponibile su https://www.igvita.com/2008/09/30/load-testing-with-log-replay/


1
Questa sarebbe una risposta molto migliore se includesse una spiegazione effettiva. Il semplice collegamento a un sito Web esterno è scoraggiato qui, poiché i siti Web possono e spesso scompaiono.
Michael Hampton

-2

Vorrei fare qualcosa in modo leggermente diverso. Capisco la tua domanda, ma se stai cercando di caricare il tuo server potresti voler esaminare lo strumento 'ab'. Viene fornito con la maggior parte delle installazioni di apache. In esecuzione:

ab -c 15 -n 1000 http://site.name/

Eseguirà 1000 richieste facendo 15 richieste alla volta. So che questo non è esattamente quello che stai cercando e questo interrogherà solo l'indirizzo che gli dai. Se hai bisogno di caricare questo è un modo rapido e semplice per farlo e ti fornirà alcune statistiche potenzialmente molto utili per il debug.


Se la domanda dice "Ho un bug che [...] il test AB [...] non è in grado di riprodurre", perché consiglieresti di usare AB?
Womble

Mi mancava AB elencato negli strumenti. : p Mi piacerebbe dire che era una modifica ma sinceramente non ne sono sicuro.
TrueDuality,

-2

Perché non sviluppi il tuo? Ottieni il registro; analizzalo. Ottieni l'URI. Effettua una chiamata a ricciolo. Puoi scrivere questo in php ed eseguirlo in apache per la concorrenza.

Se i tuoi log sono in formato gz, fai un zcat, usa la funzione readlog. Questo darà URL. Ora usa phpCurl per colpire l'URL. Per un throughput più alto eseguilo in apache (usa ab per caricarlo).


1
Quindi avrò due applicazioni per caricare il test. Sarebbe contorto.
Stewart Robinson,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.