2010-11-07 4 views
5

C'è un modo per ottenere il traffico reale del registratore sul server Web, ad es. dai registri del server Web (Apache) e riesegui questo traffico su entrambe le applicazioni Web del profilo (in Perl) sotto carico reale, o punto di riferimento e confronta la velocità delle diverse implementazioni prima di scegliere l'una o l'altra?Come riprodurre il traffico sul server Web dai registri al profilo/benchmark web app sotto carico reale?

Se è importante, webapp è scritto in Perl, e gira sotto semplice CGI, FastCGI, mod_perl (tramite ModPerl :: Registry), PSGI (tramite Plack :: App :: WrapCGI).

Crosspost a Pro Webmasters


domande simili su server Fault:

risposta

3

Una scansione rapida su Google per questo ha prodotto un post di blog interessante con i commenti utili successivi sono al http://www.igvita.com/2008/09/30/load-testing-with-log-replay/. Un commentatore ha anche menzionato lo Tsung by Process-One che consente di registrare le sessioni in tempo reale, con l'ovvia nota che dovresti essere in grado di riprodurlo nuovamente. Tuttavia, ciò non aiuta molto con i log di accesso di Apache esistenti.

+0

Il primo link mi dà "Pagina non trovata", purtroppo –

+1

Prova la cache di Google all'indirizzo http: // www .google.com/url? sa = t & source = web & cd = 1 & ved = 0CCcQIDAA & url = http% 3A% 2F% 2Fwebcache.googleusercontent.com% 2Fsearch% 3Fq% 3Dcache% 3ATGz8YxnCvcgJ% 3Awww.igvita.com% 2F2008% 2F09% 2F30% 2Fload -testing-con-log-riproduzione% 2F% 2Bload-test-witlh-og-riproduzione% 26cd% 3D1% 26hl% 3Den% 26ct% 3Dclnk% 26gl% 3Dus & ei = P4fZTOv8BcLflgfp5YGDCQ & USG = AFQjCNG1yZBmtfxBJO19whcRu4nEjz_7mA & SIG2 = fzkGw6lyW_g5eczMxXFEQA – zerolagtime

1

Breve risposta è stata data sul lato opposto.

Risposta più lunga è che non è possibile: mancheranno intestazioni di richiesta e corpi POST.

+0

Per l'applicazione Web specifica che desidero eseguire il benchmark/profilo non ha importanza: utilizza solo richieste GET e non vi è praticamente alcuna differenza. richiesta intestazioni (oltre a servire come 'text/html' vs 'application/xml + xhtml'). –

0

Se sono necessarie solo richieste GET e non è stato implementato il monitoraggio di sessione tramite i parametri di query, questo è possibile.

Una domanda: vuoi farlo in questo modo perché (1) vuoi emulare la distribuzione del traffico del mondo reale tra le tue pagine o (2) ci sono troppe pagine per prendere in considerazione la possibilità di costruire qualsiasi tipo di script di test ?

+0

Il problema non è solo l'ottimizzazione per un traffico mondiale reale, ma il fatto che il traffico reale genera una pressione I/O percepita dall'app Web (che è I/O piuttosto che CPU o memoria, o collegamento alla rete). C'è una pagina principale, oltre 800 pagine secondarie, quindi quelle sottopagine hanno molte pagine secondarie ... http://git.kernel.org –

2

State qui ultimamente. Ho pensato che se avessi scaricato il traffico TCP con tcpdump avrei potuto riscrivere la destinazione dei pacchetti e poi riprodurla nei nuovi server delle app. Così ho iniziato con qualcosa di simile:

tcpdump -i eth1 dst -s 0 -w - port 80 | \ 
tcprewrite --mtu-trunc --infile=- --outfile=- \ 
--dstipmap=<source_ip>:<destination_ip> | \ 
tcpslice -w - - | tcpreplay --intf1=eth1 - 

Non ha funzionato per vari motivi, così ho iniziato a scavare un po 'e ha trovato Gor: un piccolo progetto Go da Leonid Bugaev da Granify, scritto per esattamente quello che volevamo per realizzare qui.

Questo è come siamo finiti utilizzando Gor: http://devblog.springest.com/testing-big-infrastructure-changes-at-springest/

Abbiamo un libro di cucina Chef per esso pure: https://github.com/Springest/gor-chef

Spero che questo aiuti.

+0

Lei ha assolutamente ragione. L'ho aggiornato. Grazie – wrdevos