mercoledì 16 novembre 2011

Per la nuvola! Test delle prestazioni ASafaWeb con AppHarbor & Blitz

Se riusciamo a superare slogan formaggio di Microsoft per un momento, l'intera idea di "al cloud" è in realtà piuttosto fresco. E 'la promessa di prendere le cose che ha usato essere sia del lavoro e intensità di capitale, commoditising e servendoli su richiesta. Questo può molto facilmente suonare come retorica presentazione di PowerPoint in modo passiamo oltre il caldo e fuzzies ed effettivamente vederlo in azione.
Un paio di settimane fa ho pubblicato uno screencast come parte della mia serie 5 minuti meraviglie intitolato Da zero a eroe con AppHarbor . In questa sessione ho preso la mia attuale appartenenza abilitati sito web ASP.NET (a sua volta oggetto di una precedente 5 meraviglia minuti ), e letteralmente lo ha inviato alla cortesia nuvola di AppHarbor . Così qui ci sono 10 minuti più tardi con una registrazione completamente funzionale ed effettuare il login sito abilitato sotto controllo del codice sorgente con la costruzione di continuo e la distribuzione. Oh, ed è stato tutto gratis.
Ma una delle grandi cose circa la promessa di servizi cloud-based è che possono si estendono ben oltre la semplice applicazione di hosting. Microsoft Office 365 è solo un esempio di software come un servizio utilizzando il cloud come canale di distribuzione e ci sono molti altri che appaiono ogni giorno. Ma oggi, voglio vedere qualcosa di un po 'più vicino al cuore gli sviluppatori web'; Blitz .

Che cos'è e perché Blitz ASafaWeb bisogno?

Blitz è semplicemente un servizio di test di carico e AppHarbor è stato così gentile da lavorare con loro e introdurlo come un add-on nel loro catalogo. Blitz esiste di per sé indipendentemente AppHarbor, è solo che hanno reso davvero facile da utilizzare il servizio ed eseguirlo in applicazioni esistenti.
Il motivo per questo è importante per ASafaWeb è che è il tipo di sito che, beh, non sta per essere reale scalabile. Io dico che semplicemente perché la logica intera ASafaWeb è quello di stare lì richiedendo risorse da altri siti web che significa che tiene aperto connessioni HTTP e in attesa di risposte da siti che potrebbe essere ovunque. A partire da oggi, una singola scansione comprende di solito quattro o cinque richieste HTTP e prende un paio di secondi per l'esecuzione. Tuttavia, può prendere un bel po 'più lungo di quello a seconda di quanto velocemente si può ottenere una risposta.
Quello che ho deciso di fare con ASafaWeb è impegnarsi in anticipo assolutamente zero nella ottimizzazione delle prestazioni. Non voglio dire che ho volutamente costruito per essere lento, ho solo dire che ho costruito ogni caratteristica con lo sforzo più basso possibile per essere funzionale. Parte del motivo è che ho voluto mettere Blitz attraverso i suoi passi ed effettivamente quantificare i guadagni di prestazioni messa a punto alcune misure che ho in mente fare. Quindi cerchiamo di andare avanti con lo show.

Lasciate che il blitz abbia inizio!

Blitz si trova appena nella pagina AppHarbor add-on e come ogni cosa riguardo AppHarbor, è possibile entrare in esso gratuitamente:
Blitz add-on sul sito AppHarbor
Il test gratuito ci offre una simulazione di carico di 250 utenti simultanei che è cumuli di ASafaWeb. La prima cosa che devi fare quando si seleziona il servizio è quello di scegliere quale applicazione per eseguire contro di essa. Ho un paio di AppHarbor ma oggi che sta per essere eseguito ASafaWeb:
Applicando il Blitz add-on per un app
Dopo aver aggiunto Blitz appare come un altro add-on per l'applicazione:
Il Blitz add-on elencato accanto ad altri add-ons
Una volta che abbiamo effettivamente vanno a Blitz si finisce sul loro sito web, ma avvolto in AppHarbor nav con l'applicazione ASafaWeb appena elencati sotto. Oh, e ci viene richiesto di "Play!"; Sembra divertente:
Caricamento del sito Blitz all'interno AppHarbor
Una volta che inizia a giocare si entra nella semantica di come Blitz piste. In primo luogo c'è il concetto di "sprint". Pensate a uno sprint come un corridore solo mettere il vostro sito attraverso i suoi passi. Poi c'è una "corsa" che è fondamentalmente un insieme di sprint lanciato ai danni del sito in modo coordinato. Questo è dove il carico viene generato.
Dando il via ad uno sprint è semplice come collegare un URL. Voglio avere un'idea di come l'applicazione esegue quando non sta facendo nulla del lavoro intensivo quindi cerchiamo di dare il via con la pagina "About" . ASafaWeb è un ASP.NET MVC 3 app e questa pagina non è altro che un controllore direttamente restituendo una visione statica con i trattamenti in corso in modo che dovrebbe essere super veloce.
A partire uno sprint con Blitz
L'esecuzione dei risultati sprint in un po 'di elaborazione seguita da una sintesi delle risposte ricevute dal sito:
La risposta da uno sprint
Quello che è importante anche se è la linea di comando fino alla cima. Cliccando su questo tizio spara la corsa che è dove tutte le emozioni comincia. Ciò che otteniamo ora - e non si traduce bene a immagini statiche su un blog - è un grafico che si aggiorna in intervalli di cinque secondi. Una volta che esegue tutti, sembra qualcosa di simile:
I risultati di una corsa in esecuzione againt la pagina "about" in ASafaWeb
Immaginate che ogni uno dei punti nel primo grafico appare in tempo reale a intervalli di cinque secondi. E 'in funzione del tempo nella corsa sull'asse X e il tempo che impiega la pagina di rispondere sull'asse Y. La linea grigia diagonale è il numero di richieste emesse per secondo e, come potete vedere, scala da zero fino al 250 per tutta la durata del test sessantiduesimo.
Il secondo grafico riporta semplicemente i colpi al secondo, che si allinea naturalmente abbastanza bene con il numero di utenti. In altre parole, ASafaWeb pagina "About" è in grado di tornare con successo i risultati alla stessa velocità richieste stanno arrivando fino al massimo di 250 al secondo. Che cosa tutto questo ci sta dicendo è che gli utenti scalare, ASafaWeb non ha assolutamente alcuna difficoltà a soddisfare la domanda per la pagina.Nessuna sorpresa c'è.
Nel corso sulla scheda "Highlights", otteniamo informazioni un po 'più ma ancora una volta, è tutto una buona notizia:
Sintesi perfetta dopo la corsa sul ASafaWeb "circa" pagina
Statistiche piuttosto impressionante per un servizio gratuito - 7.272 visite in un solo minuto!Ora lo rendono interessante.

Caricamento in corso le scansioni ASafaWeb

ASafaWeb richieste GET consente di eseguire scansioni, costruendo con l'URL del sito da sottoporre a scansione. Significa una richiesta per eseguire la scansione di un sito comeisnot.asafaweb.com (il sito fittizio vulnerabili che uso per i test), si presenta così:http://asafaweb.com/Scan?Url=isnot.asafaweb.com
Il fatto è, però, ogni ASafaWeb scansione attivano in realtà risultato di numerose richieste HTTP al sito di destinazione. Di conseguenza, la scansione sopra significa 4 richieste che consumano un totale di circa 11KB e dura circa un secondo da eseguire. Questo è abbastanza veloce, perché è la scansione su un altro sito AppHarbor e non c'è praticamente nessun contenuto su di essa (che è 11KB in quattro risposte separate), ma la scansione di un normale sito web, per esempio, l'Australia e quei numeri rapidamente esplodere. Pensare di più come un ordine di grandezza superiore.
Per impostazione predefinita, Blitz scadrà un secondo dopo il rilascio di una richiesta che semplicemente non funziona per ASafaWeb causa non per colpa propria. Fortunatamente siamo in grado di personalizzare il corridore a prendere il comando timeout in modo che combina con i valori di default ci dà qualcosa di più in questo modo:
-P 1-250:60-T 10000 http://asafaweb.com/Scan?Url = ...
Solo una cosa però: noi non abbiamo a scalare fino a 250 utenti consecutivi e in effetti questo mette un inferno di un carico sul motore di scansione in ASafaWeb. Attraverso alcune prove ed errori in combinazione con una "ragionevole aspettativa" di quello che ho pensato che il sito dovrebbe inizialmente di supporto, ho risolto a 50 utenti simultanei. Questo potrebbe non sembrare molto, ma di tenere presente che significa 50 concorrenti scansionitutte in esecuzione nello stesso momento. Per dimostrare dove le cose iniziano a fallire, ho ottimizzato la scansione un po 'a correre fino a 100 utenti come segue:
-P 1-100:60-T 10000 http://asafaweb.com/Scan?Url = ...
Quindi è solo che primo switch. Diciamo la rincorsa:
Una corsa contro una scansione ASafaWeb rallentare in boa 60 utente
In primo luogo, questi risultati sono estremamente variabili, semplicemente perché ci sono tante cose diverse accadendo. Devi parlare con Blitz ASafaWeb esecuzione su infrastruttura condivisa che viene poi fare un mucchio di richieste fuori dall'altra parte del mondo contro un server, che ha poi le spese generali e propria variazioni nel modo in cui risponde. Il risultato è al di sopra semplicemente uno dei più coerenti, quelli che rendono più pulita cercando interpretazione un po 'più facile.
Il grafico iniziale mostra tutto cercando piuttosto stabile fino a circa il segno di 35 secondi.Questa scansione dovrebbe prendere circa 1 a 1,5 secondi da eseguire e possiamo vedere che succede nettamente in virtù di ciascuno dei punti sulla linea gialla essere abbastanza consistente per la prima metà del test. Guardando la linea grigia diagonale che illustra il numero di utenti simultanei, è a circa 60 utenti che le cose cominciano a cambiare.
La prima cosa che notiamo in boa 60 utente è che i tempi di risposta aumentano. Più carico uguale semplicemente una durata superiore per l'applicazione di fare il suo lavoro e restituire una risposta. Il grafico sottostante indica allora noi che questo sta colpendo anche il nostro rendimento in termini di numero di visite per l'applicazione è in grado di server per ogni secondo. La linea verde mostra la gioia che servono fino a circa 23 in un secondo dopo che in realtà diminuisce . Perché? L'applicazione ha chiaramente esaurito le sue risorse e, come sappiamo dal grafico in alto, sta avendo difficoltà a rispondere alla solita quantità di tempo, colpisce meno i tempi di risposta più uguale al secondo. In realtà abbiamo effettivamente appena eseguito una negazione po 'di attacco servizio ASafaWeb.
L'altra cosa che vediamo nel grafico in basso è la linea rossa errore. Noi davvero non si vuole questo ragazzo perché significa che il server è effettivamente dicendo "Questo è tutto - time out", "time out" Non come in esso non ha risposto entro dieci secondi "time out", come nelle sue risposto e gentilmente consigliato non può servire la richiesta. "Esaurimento delle risorse", come Blitz si riferisce ad esso.
Infine, si ottiene una carrellata su tutto lo scenario attraverso la scheda "Highlights". Come si può vedere qui, abbiamo ottenuto fino a 69 utenti simultanei, prima che primo errore si è verificato a quasi il segno di 42 secondi:
Riassunto di una corsa su una scansione ASafaWeb con un tasso di fallimento 2,67%
Non male, visto quello che sta facendo, ma penso che possiamo fare di meglio ...

Scaling up, per gentile concessione di AppHarbor

La promessa della nube è che tutto è standardizzato; pagare per quello che si utilizza, aggiungere di più quando ne avete bisogno e fare tutto on-demand. Tale è la promessa AppHarbor e non potrebbe essere più facile:
Scalabilità orizzontale AppHarbor con un server web adiditonal
Per ora, AppHarbor stanno offrendo scaling fino a un server aggiuntivo gratuito che è piuttosto comodo. Ciò significa che ASafaWeb in grado di scalare fino ad un'altezza molto più alta con un clic di un pulsante. Corriamo che Blitz scansione di nuovo ora che abbiamo raddoppiato i server:
ASafaWeb buoni risultati in fretta e furia dopo che il server web aggiuntivo è stato aggiunto
Tenuto conto di tutte le variazioni che entrano in una di queste scansioni, questo è un risultato molto lineare. Ok, c'è un errore, ma stiamo parlando 0,08% attuale tasso di fallimento piuttosto che 2,67% con il solo singolo server in modo che una differenza abbastanza fondamentale. In altre parole, abbiamo appena scalato l'applicazione in modo tale che il tasso di errore a causa del carico si è ridotto del 97%, e tutti abbiamo fatto è stato fare clic su un pulsante.

Riassunto

Questo è un buon posto per riflettere sulla proposta di valore che nuvola; il codice ASafaWeb potrebbe essere migliorato molto, non ci sono dubbi. Ho potuto trascorrere un po 'di tempo analizzare o addirittura pagare qualcuno più intelligente di me a farlo e sono sicuro che, con uno sforzo sufficiente, sarebbe meglio effettuare di quanto non faccia oggi. In alternativa, posso solo aggiungere scala per le infrastrutture. Naturalmente questo normalmente hanno un costo, ma per un business, la tentazione solo per tirar fuori la carta di credito e aggiungere istantaneamente le prestazioni è molto significativo.
L'offerta cloud Blitz è anche molto attraente. Non era molto tempo fa che i test di carico significava l'uso di alcuni software complicato e cercando di simulare il carico da piedi più "bot" per distribuire le richieste attraverso una collezione orchestrato di macchine. Non è stato difficile , ma ci volle un certo sforzo da configurare e poi analizzare. Non so che tipo di back-end Blitz corre e la cosa grande circa il paradigma cloud è che non mi interessa .Offrono un servizio. Funziona. Fine della storia.
E questo è proprio esattamente quello che ci aspettiamo da questo concetto di "cloud", che viene gettato in giro così a caso oggi, vogliamo qualcosa che possiamo accendere quando vogliamo, scala in su ogni volta che ci voglia, e non frega niente della meccanica che fare funzionare il tutto. Questa è la promessa del cloud trasportato a destra nelle nostre mani da AppHarbor. 

Nessun commento:

Posta un commento