2009-09-17 15 views
5

Sto pianificando di installare un sito alimentato con django. Ma mi sento confuso riguardo alla scelta dei server web, che include apache, lighttpd, nginx e altri.Come valutare le prestazioni dei server Web?

Ho letto alcuni articoli sulle prestazioni di ciascuna di queste scelte. Ma sembra che nessuno sia d'accordo. Quindi mi chiedo perché non testare la performance da solo?

Non riesco a trovare informazioni sull'approccio migliore ai server Web di test delle prestazioni. Quindi le mie domande sono:

  1. Esiste un approccio semplice per testare le prestazioni senza il sito di produzione?
  2. Oppure è possibile avere un metodo per simulare il traffico intenso per ottenere un test corretto?
  3. Come posso mantenere il mio test equo e vicino alla situazione di produzione?

Dopo il test, voglio capire:

  1. Perché alcuni tra quelli dire nginx ha una migliore performance quando serve file statici.
  2. Le esigenze di memoria e cpu di ciascun server Web.
  3. La mia scelta migliore.

risposta

3

Strumenti come ab sono comunemente usati nei confronti di prova quanto carico si può prendere da un avariato di richieste in una sola volta, al fianco di cactus/munin/vostro strumento di monitoraggio del sistema o scelta è possibile generare i dati sul carico di sistema & richieste/sec . Il problema con questo è il benchmarking di molte persone che non si rendono conto che devono richiedere molte richieste diverse, poiché l'esecuzione di diverse parti del codice richiederà tempi variabili. Anche il profiling e il benchmarking del codice e non le richieste sono importanti, per cui un sacco di gente ha already done so for django, benchrun non è neanche un cattivo strumento.

L'altro problema è il numero di richieste HTTP richieste da ciascuna visualizzazione di pagina. La minore quantità di richieste e la velocità con cui possono essere elaborate è la chiave per avere siti Web in grado di sostenere una quantità elevata di traffico, poiché quanto più velocemente è possibile terminare e chiudere le connessioni, tanto più rapidamente le risorse vengono allocate a quelle nuove.

In termini di velocità generale dei server Web, è ovvio che un server proxy (che esegue l'inversione alla fine) sarà sempre più veloce di un server web con contenuto statico. Per quanto riguarda Apache vs nginx per quanto riguarda la tua app django, sembra che mod_python sia effettivamente più veloce di nginx/lighty + FastCGI ma non c'è da meravigliarsi perché CGI, indipendentemente da eventuali accelerazioni, è ancora lento. L'esecuzione e il codice di memorizzazione nella cache del server Web e la sua gestione sono sempre più veloci (mod_perl vs use CGI, mod_php vs CGI, ecc.) Se lo fai correttamente.

+2

Il problema con nginx/lighty + wsgi è un po 'più profondo di quanto si possa pensare: http://blog.dscpl.com.au/2009/05/blocking-requests-and-nginx-version-of.html –

1

È necessario configurare il server Web + sito Web di propria scelta su una macchina da qualche parte, preferibilmente una macchina fisica con specifiche hardware simili a quella alla quale si sta eventualmente distribuendo.

È quindi necessario utilizzare un framework di test del carico, ad esempio The Grinder (gratuito), per simulare molti utenti che utilizzano il sito contemporaneamente.

Il framework di test del carico deve essere su macchine separate e si deve monitorare anche l'utilizzo della rete e della CPU di tali macchine per assicurarsi che il fattore limitante del test sia in realtà il server Web e non il carico iniettori.

Oltre a modificare il contenuto e monitorare i tempi di risposta, il throughput, la memoria e l'uso della CPU ecc., Per vedere come cambiano a seconda del server Web che si utilizza e del tipo di contenuto che si sta ospitando.

2

Apache JMeter è uno strumento eccellente per le applicazioni Web di stress testing. Può essere utilizzato con qualsiasi server web, non solo Apache.

Problemi correlati