Esiste un modo per testare come funzionerà il sito sotto carico


9

Ho creato un sito Web Asp.net MVC e l'ho ospitato su un provider di hosting condiviso. Poiché il mio sito Web circonda un'idea molto generica, potrebbe avere un numero di utenti simultanei in futuro.

Quindi, stavo pensando a un modo per testare il mio sito Web per le prestazioni sotto carico. Ad esempio, come funzionerà il sito quando 100 o 1000 utenti sono online contemporaneamente e navigano sul sito. Questo mi farà anche capire se le mie domande LINQ sono ben scritte o meno.

Risposte:


12

Prima di tutto, il termine corretto è stress test . Esistono alcune soluzioni per gli stress test del sito Web, una soluzione ospitata che consiglierei è loadimpact . Quello che fanno è bombardare il tuo sito con richieste da vari server in tutto il mondo e fornirti un rapporto analitico su come il tuo sito ha gestito lo stress. Hanno un test gratuito, dove puoi avere un'idea generale, ma per di più dovrai pagare una quota di abbonamento.

Questi tipi di test testare solo per il sito da parte dei visitatori punto di vista, per ulteriori informazioni specifiche si dovrebbe profilare l'applicazione a livello locale, e io in realtà non hanno nulla da aggiungere alle risposte precedenti, sto usando jmeter pure .

E, infine, come qualsiasi sviluppatore web attento alle prestazioni, dovresti dare un'occhiata a YSlow :

YSlow analizza le prestazioni della pagina Web esaminando tutti i componenti della pagina, inclusi i componenti creati dinamicamente utilizzando JavaScript. Misura le prestazioni della pagina e offre suggerimenti per il miglioramento.

YSlow per Firefox è integrato nello strumento di sviluppo web Firebug per Firefox.

Più spesso, trovo che Javascript sia il vero collo di bottiglia e non il codice di back-end o il database. Ovviamente le query scritte male possono essere una grave penalità per le prestazioni, ma dopo averle affrontate, esegui sempre YSlow e segui i suoi suggerimenti, è un salvavita.

Ulteriori letture:

su StackOverflow, ovviamente!


Esplora altre soluzioni prima di pagare la quota di abbonamento di loadimpact, ovviamente. Ci sono alcune soluzioni simili. Lo adoro, ma il lavoro ha pagato la tassa non io :)
yannis

Userò il test gratuito .... non voglio test rigorosi per ora, in quanto non ha alcun senso per il momento .... voglio solo avere l'idea :-)
Pankaj Upadhyay

7

Sei su hosting condiviso, quindi è improbabile che tu sia in grado di eseguire test che siano correttamente indicativi delle prestazioni, dal momento che non esiste alcuna garanzia del livello di risorse a cui l'applicazione avrà accesso in qualsiasi momento.

Tuttavia, ciò che vorrei fare in quella situazione è iniziare eseguendo un test isolatamente su una scatola dedicata (questo può essere il tuo laptop); utilizzare uno strumento come la suite di test del carico di Visual Studio o JMeter (che personalmente non sopporto) e creare un set di test che rappresentano un percorso tipico attraverso l'applicazione (dovresti essere in grado di ottenere informazioni su un percorso tipico attraverso l'uso di Google Analytics. Se questo non è disponibile, puoi semplicemente usarne uno che ritieni probabile, ma ricorda che questo non fornirà una base di riferimento altrettanto accurata). Quindi esegui un test di accelerazione, inizia da 1 utente, quindi aggiungi lentamente gli utenti fino a raggiungere il picco di carico stimato. Ciò dovrebbe mostrarti quanto bene il tuo sistema regge nel suo insieme (personalmente mi piace portarlo un po 'oltre per assicurarmi di avere un po' di margine).

L'ultima cosa che vorrai fare è eseguire uno strumento di profilazione come il profiler delle prestazioni ANTS durante l'esecuzione del test (tieni presente che questo aggiunge un certo sovraccarico). Ciò ti consentirà di identificare query e metodi di lunga durata, dandoti indicazioni su dove l'applicazione è davvero lenta (un consiglio: non è quasi mai realmente dove pensi che sarà).

Il problema principale che avrai è, come ho detto prima, che sei sull'hosting condiviso, quindi sarà quasi impossibile ottenere un'emulazione realistica dell'ambiente live. Tuttavia, se l'applicazione ha una discreta quantità di headroom in un ambiente simile alle risorse promesse, dovresti avere una certa sicurezza che il codice possa reggere il tuo hosting, anche se raggiungi i limiti del tuo ambiente prima di aspettarti.


grazie per aver fatto luce sulla differenza tra i test di hosting condiviso e il proprio server.
Pankaj Upadhyay,

3

Puoi esaminare strumenti come JMeter o The Grinder .

Finora ho usato JMeter, è uno strumento grafico che ti consente di creare piani di test abbastanza facilmente. Puoi simulare più utenti con più thread. Puoi anche registrare gli utilizzi tipici del tuo sito collegando il tuo browser con un proxy JMeter e facendo il lavoro vero e proprio, quindi non devi scrivere tu stesso le richieste da zero. The Grinder è basato su script se ricordo bene, potrebbe anche essere una buona scelta.


1

Mi piace anche Loadimpact per le prove di stress. Una cosa che tendo a usare per controlli rapidi sul mio sito è Apache Bench. Quando voglio eseguire alcuni test finali, cercherò un servizio a pagamento.

Il mio lavoro ha anche investito in WebLoads, che è molto costoso ma ci consente di testare tutti i nostri siti internamente. Non lo consiglio però.


0

Non credo che i test di carico possano essere eseguiti manualmente in quanto consumeranno più tempo del previsto e sarà un compito noioso. Probabilmente puoi scegliere Load Runner che può essere utilizzato da molti utenti.


0

Uno script Autohotkey (AHK) può simulare un utente umano. Lascialo funzionare tutto il giorno.

Puoi lasciarlo funzionare su più caselle per simulare alcuni utenti. La cosa bella è che lo stile di test è completamente sotto il tuo controllo. Puoi avere 1 script AHK che invia spam a una funzione di report e vedere se influisce sugli utenti di altre funzionalità.

Anche se non ho familiarità con le capacità di threading di AHK, simulare migliaia di utenti potrebbe essere difficile. Potresti essere vincolato dal numero di computer che hai.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.