2009-09-26 6 views
7

Ho sviluppato un'applicazione che creerà molti PDF e servirà quei file. (La sua normale funzione Servlet-Buffering).Come verificare la scalabilità della mia applicazione

Come assicurarsi che la mia applicazione funzioni efficientemente con più richieste? C'è qualche strumento disponibile per testare il carico/scalabilità/efficienza e quante richieste parallele il mio codice gestisce con la configurazione attuale del server?

risposta

1

Si dovrebbe considerare l'utilizzo di strumenti di test di carico come grinder o jmeter. grinder supporta lo scripting mentre jmeter ti permette di trasformare junit in load test client. Personalmente mi piace jmeter a causa del supporto di junit e anche il suo controllo e reporting. jmeter supporta http e soap fuori dalla scatola. Inoltre, puoi scrivere i tuoi plugin per soddisfare le tue esigenze personalizzate.

1

Vorrei anche raccomandare JMeter. È inoltre possibile registrare le richieste di pagina del browser per creare un test JMeter (HTTP Proxy Server).

1

È inoltre necessario disporre di strumenti di sorveglianza per vedere come si comporta l'applicazione sotto carico.

Un buon inizio è jvisualvm che si trova nell'ultimo Sun JDK.

1

La cosa più semplice che puoi fare è un benchmark Apache che è probabilmente già installato se stai usando un sistema basato su Unix o viene fornito con Apache Webserver 2.x per Windows.

Esempio d'uso;

$ ab -n 1000 -c 20 http://www.google.com/ 

Mi dà questa uscita;

This is ApacheBench, Version 2.3 <$Revision: 655654 $> 
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ 
Licensed to The Apache Software Foundation, http://www.apache.org/ 

Benchmarking www.google.com (be patient) 
Completed 100 requests 
Completed 200 requests 
Completed 300 requests 
Completed 400 requests 
Completed 500 requests 
Completed 600 requests 
Completed 700 requests 
Completed 800 requests 
Completed 900 requests 
Completed 1000 requests 
Finished 1000 requests 


Server Software:  gws 
Server Hostname:  www.google.com 
Server Port:   80 

Document Path:  /
Document Length:  218 bytes 

Concurrency Level:  20 
Time taken for tests: 1.826 seconds 
Complete requests:  1000 
Failed requests:  0 
Write errors:   0 
Non-2xx responses:  1000 
Total transferred:  807000 bytes 
HTML transferred:  218000 bytes 
Requests per second: 547.55 [#/sec] (mean) 
Time per request:  36.527 [ms] (mean) 
Time per request:  1.826 [ms] (mean, across all concurrent requests) 
Transfer rate:   431.51 [Kbytes/sec] received 

Connection Times (ms) 
       min mean[+/-sd] median max 
Connect:  9 12 14.7  10  337 
Processing: 11 24 26.8  17  306 
Waiting:  11 22 21.1  16  297 
Total:   21 36 30.5  28  350 

Percentage of the requests served within a certain time (ms) 
    50%  28 
    66%  36 
    75%  39 
    80%  41 
    90%  45 
    95%  54 
    98%  93 
    99% 253 
100% 350 (longest request) 
0

Apachebench è uno strumento a thread singolo. Significa che non sarà in grado di saturare un server SMP (muti-thread o multi-processo).

Si consiglia di considerare weighttp, che utilizza la sintassi AB (l'unica differenza è che -t 4 significa utilizzare 4 thread di lavoro anziché un test di 4 secondi).