Attualmente sto lavorando su un codice pesante Ajax e mi sto chiedendo come il mio server si ridurrà man mano che sempre più utenti (si spera) inizieranno a utilizzare la mia app web. È solo sul mio server di test interno per il momento e mi chiedevo come avrei fatto a simulare qualche centinaio di migliaia di utenti in modo da poter vedere come gestisce un carico più pesante. È scritto in PHP/MySQL e in realtà non volevo trovare centinaia di computer da configurare e testare manualmente :) Grazie in anticipo, qualsiasi consiglio o direzione è molto apprezzato.Test delle bilance del codice
risposta
Riferimento Apache. Viene fornito con Apache Web Server. Funziona un po 'come questo: Per 100 richieste utilizzando 10 thread simultanei, utilizzare questo comando:
ab -n 100 -c 10 http://localhost/
sostituire l'URL localhost con un URL che il codice AJAX verrà chiamando. L'output ti darà una bella relazione su come sono state elaborate le richieste. Alcuni dei numeri interessanti sono:
Complete requests
Failed requests
Requests per second
Quello che ho fatto, che darà un'idea molto approssimativa, è quello di scrivere un programma che permette di creare decine o centinaia di fili, e in modo casuale colpito le decine di server di volte ciascuno , con utenti unici.
Quindi, ho avuto 100 utenti di test unici e vorrei creare 100 thread e continuare a fare casualmente alcune operazioni a intervalli casuali.
Questo dirà se si hanno problemi di scala.
In definitiva, tuttavia, si avrà un problema, poiché si dispone di una sola connessione di rete, quindi la velocità sarà limitata, quindi non è perfetta.
È inoltre possibile utilizzare junitperf per aiutare con questo, come è possibile quindi verificare se ciascun test impiega troppo tempo a rispondere.
La cosa migliore è prendere questi test, metterli su quante macchine si può, ed eseguirli in una sola volta, di avere 10 computer ogni fingendo di essere 10 o 100 persone è più efficace di avere un computer finta essere ciascuna di queste persone.
Non vorrete avere il server web e i test sullo stesso computer, altrimenti questo rovinerà seriamente i risultati poiché il server web riceverà solo alcuni dei cicli della CPU.
Dato questo problema, vorrei registrare una sessione utente. Quindi scrivi il codice cliente che riproduce quel gruppo di chiamate.
Un'altra opzione sarebbe utilizzare VMware. (nota, sono un dipendente) Basta creare un gruppo di VM e collegarsi al tuo sito con ognuna di esse. Significa comunque un sacco di lavoro manuale, ma almeno non hai bisogno di tante macchine per fare il test.
vi consiglio LoadUI http://www.loadui.org/
Nella stessa vena come 'ab', c'è Tsung - http://tsung.erlang-projects.org/ ho usato ed è uno strumento fantastico. – inerte