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

9

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

Quindi, stavo pensando a un modo per testare il mio sito web per le prestazioni a carico. Ad esempio, come funzionerà il sito quando 100 o 1000 utenti sono online nello stesso momento e navigano nel sito web. Questo mi farà capire anche se le mie query LINQ sono scritte bene o meno.

    
posta Pankaj Upadhyay 04.01.2012 - 13:51
fonte

6 risposte

12

Prima di tutto, il termine corretto è test di stress . Esistono diverse soluzioni per gli stress test del sito Web, una soluzione in hosting che raccomando è loadimpact . Quello che fanno è bombardare il tuo sito con richieste da vari server in tutto il mondo e ti fornisce un rapporto analitico di 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 iscrizione.

Questi tipi di test testano solo il sito Web dal punto di vista dei visitatori, per informazioni più specifiche dovresti profilare la tua applicazione localmente, e in realtà non ho altro da aggiungere alle risposte precedenti, sto usando < a href="http://jmeter.apache.org/"> Apache JMeter .

Infine, come sviluppatore web attento alle prestazioni, dovresti dare un'occhiata a YSlow :

YSlow analyzes web page performance by examining all the components on the page, including components dynamically created by using JavaScript. It measures the page's performance and offers suggestions for improvement.

YSlow for Firefox is integrated into the Firebug web development tool for Firefox.

Il più delle volte, trovo che Javascript sia il vero collo di bottiglia e non il codice finale o il database. Ovviamente le query scritte male possono essere una penalità importante per le prestazioni, ma dopo averle gestite, eseguire sempre YSlow e seguire i suoi suggerimenti, è un salvataggi.

Ulteriori letture:

su StackOverflow, ovviamente!

    
risposta data 04.01.2012 - 14:23
fonte
7

Sei su hosting condiviso, quindi è improbabile che tu possa eseguire qualsiasi test che sia correttamente indicativo delle prestazioni, dal momento che non è garantito il livello di risorse a cui l'applicazione avrà accesso in qualsiasi momento.

Tuttavia, quello che vorrei fare in quella situazione è iniziare eseguendo un test in isolamento su un box dedicato (questo può essere il tuo portatile); utilizzare uno strumento come la suite Load Test di Visual Studio o JMeter (che personalmente non sopporto) e creare una serie 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 usare quello che ritieni probabile, ma ricorda che questo non fornirà una base di riferimento precisa. Quindi esegui un test di accelerazione, inizia da 1 utente, quindi aggiungi lentamente gli utenti fino a quando non raggiungi il tuo picco di carico stimato. Questo dovrebbe mostrarti quanto bene il tuo sistema regge nel suo complesso (personalmente mi piace prenderlo un po 'di più per assicurarmi di avere qualche margine).

L'ultima cosa che vorrai fare è eseguire uno strumento di profilazione come ANTS performance profiler durante l'esecuzione del test (tieni presente che questo aggiunge un sovraccarico). Questo ti permetterà di identificare query e metodi di lunga durata, dandoti indicazioni su dove la tua applicazione è veramente lenta (un consiglio: non è quasi mai dove pensi che sarà).

Il problema principale che si avrà è, come ho detto prima, che si è su hosting condiviso, quindi sarà quasi impossibile ottenere un'emulazione realistica di live-environment. Tuttavia, se la tua applicazione ha una discreta quantità di headroom in un ambiente simile alle risorse promesse, dovresti avere una certa sicurezza che il codice possa reggere nel tuo hosting, anche se raggiungi i limiti del tuo ambiente prima che te lo aspetti.

    
risposta data 04.01.2012 - 14:09
fonte
3

Puoi cercare strumenti come JMeter o The Grinder .

Ho usato JMeter finora, è uno strumento grafico che ti permette di costruire piani di test abbastanza facilmente. È possibile simulare più utenti con più thread. Puoi anche registrare usi tipici del tuo sito collegando il tuo browser con un proxy JMeter e facendo il lavoro vero e proprio, quindi non hai bisogno di scrivere da zero le richieste da solo. The Grinder è basato su script se ricordo bene, potrebbe anche essere una buona idea.

    
risposta data 04.01.2012 - 13:57
fonte
1

Mi piace anche Loadimpact per gli stress test. Una cosa che tendo ad usare per i 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 internamente tutti i nostri siti. Non lo consiglio però.

    
risposta data 04.01.2012 - 20:16
fonte
0

Non credo che il test di carico possa essere eseguito manualmente poiché consumerà più tempo del previsto e sarà un compito noioso. Probabilmente puoi andare su Load Runner che può andare per molti utenti.

    
risposta data 11.12.2012 - 11:26
fonte
0

Uno script Autohotkey (AHK) può simulare un utente umano. Lascia che funzioni tutto il giorno.

Puoi lasciarlo girare su diverse 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 interessa gli utenti di altre funzionalità.

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

    
risposta data 11.12.2012 - 16:28
fonte

Leggi altre domande sui tag