Esegui con facilità un test di stress sul tuo sito Web con Azure e l'automazione

Il test di stress è un fattore importante dello sviluppo di un sito. Portando il sito al livello di utilizzo massimo in un ambiente controllato, potrai assicurarti che non si verifichino bug imprevisti ed evitare arresti anomali e tempi di inattività. Con Azure, puoi eseguire numerosi test differenti, che potrai automatizzare in modo da poterti concentrare sull'analisi dei risultati e sulla correzione degli errori. Non dimenticare di visitare questa pagina per provare Azure e ottenere un credito di 170 €.

Impostazione di un ambiente

Come prima cosa, dobbiamo creare una macchina virtuale in Azure, dove eseguiremo i test. A tale scopo, ecco i passaggi necessari:

 

 

In base al tipo di test da eseguire, potrebbe essere necessaria una macchina potente. Scelgo una macchina A4, in modo da poter gestire test pesanti.

 

Eseguiremo la connessione tramite Desktop remoto con queste credenziali.

 

 

 

Al termine della creazione, avremo a disposizione in servizio simile al seguente. Effettuiamo la connessione in remoto:

 

 

 

 

 

Da ora in poi, useremo la macchina virtuale eseguita in Azure:

 

 

Abbonati MSDN: l'accesso può essere eseguito direttamente con l'account Microsoft. Gli altri utenti possono usare il proprio account Visual Studio.

Andiamo a File> New> Project e scegliamo Web Performance and Load Test Project.

 

Iniziamo con la creazione di un test prestazioni Web comune

 

È qui che iniziamo a registrare gli scenari. In pratica, registriamo uno scenario di sito Web per Visual Studio, quindi lo ripetiamo dozzine o addirittura migliaia di volte contemporaneamente. Possiamo usare azioni come autenticazione, generazione di richieste, transazioni e altro. Al momento della connessione, è disponibile un sito Web che genera solo cicli di elaborazione, ma le varianti sono infinite e dipendono dalle proprie esigenze. A questo punto, registriamo la sessione:

 

 

Questo è l'esempio più semplice, con una sola richiesta.

 

Bene. A questo punto creiamo un caso automatizzato di un utente che visita un sito. Ora, simuliamo la presenza di centinaia di utenti che accedono contemporaneamente al sito:

 

 

 

Aggiungiamo il WebTest creato in precedenza:

 

 

La procedura guidata offre molte alternative. È possibile generare ondate, generare traffico costante, impostare la durata del test e del riscaldamento e altro ancora. Ulteriori spiegazioni sono disponibili qui: https://msdn.microsoft.com/library/vstudio/dd293540(v=vs.110).aspx . Una volta configurato il test, premiamo Run per iniziare l'esecuzione. Ecco qui di seguito le impostazioni che ho usato per il test:

 

 

Interessante, non è vero? Il programma usa solo cicli. Lo caricherò in un ruolo Web di Azure:

 

Ora è in esecuzione.

Risultati

Come prima cosa, diamo uno sguardo al pannello di Visual Studio. Sono visualizzati valori come indicatori chiave, tempo di risposta per pagina e molti altri che consentono di capire il comportamento dell'applicazione. È consigliabile provare personalmente. In caso di domande, leggi il seguente articolo: https://msdn.microsoft.com/library/vstudio/ee923686(v=vs.110).aspx

 

 

Concentriamoci ora sull'aspetto più interessante, i risultati nella vista dell'utente finale. Come puoi vedere nelle schermate che seguono, l'app ha iniziato a riscontrare un carico di utenti particolarmente elevato verso le 12.45. Il picco di 100 richieste utente generate al secondo ha causato un aumento dell'utilizzo della CPU fino al 63,58%.

 

L'applicazione ha comunque continuato a essere reattiva e i valori ottenuti per il tempo di risposta per pagina (Page Response Time) indicano che il risultato è accettabile. È anche opportuno considerare alcuni aspetti relativi alla pianificazione della capacità associata a questi scenari: simulazione degli utenti, calcolo del numero di istanze e progettazione su una scala più vasta.

Procediamo ora con la creazione di uno scenario più complesso ed eseguiamo lo stesso test in modo da sovraccaricare il processore. Avviamo quindi il test con 5000 utenti simultanei che eseguono richieste ogni secondo.

 

Come puoi notare, l'impatto sui tempi di risposta è notevole. Non è un segno positivo. Al termine del picco, i tempi rientrano nella normalità:

 

Di seguito è mostrato il carico sul processore:

 

E questi sono i risultati del test:

 

Ridimensionamento

Ho intenzionalmente disabilitato il ridimensionamento automatico delle istanze per identificare la capacità massima di ognuna di esse. A questo punto, possiamo semplicemente ridimensionare il numero di istanze e determinare la modalità di risposta allo stesso test. A tale scopo, aumenterò il numero di istanze a 2:

 

 

Eseguirò quindi lo stesso test completo con 2 istanze. Inoltre, il servizio di bilanciamento del carico è configurato per l'uso di un algoritmo Round Robin, che consente di inviare una richiesta usando ciascuna istanza in modo alternato. Prima del test:

 

Durante il test:

 

Si riscontra nuovamente una riduzione delle prestazioni. Tuttavia, raddoppiando il numero di istanze, i tempi di risposta hanno subito una riduzione del 50%. È possibile che sia solo una coincidenza?

 

Ecco la visualizzazione in Azure:

 

Conclusione

Questi metodi consentono di rilevare il livello di supporto di carichi completi esterni da parte dell'applicazione in uso. Grazie a queste informazioni possiamo effettuare una stima più precisa e basata su dati concreti del numero di istanze da assegnare all'applicazione affinché sia in grado di supportare un livello di servizio specifico. Ciò è fondamentale per le applicazioni che richiedono disponibilità elevata.

La cosa più incredibile è che tutto questo può essere configurato in meno di un'ora, evitando inoltre l'installazione o l'acquisto di software, grazie ad Azure.

Consigliati per te

▲ Torna all'inizio