Considerazioni per test di carico di grandi dimensioni
Aggiornamento: novembre 2007
In questo argomento vengono forniti suggerimenti per l'esecuzione di test di carico di grandi dimensioni in Visual Studio Team System Test Edition. Verranno descritti i seguenti aspetti:
Scelta del modello di carico appropriato
Scelta del modello di connessione appropriato
Frequenza di campionamento e raccolta dati
Tempo interazione utente
Impostazione dei tempi di risposta obiettivo per le richieste test Web
Inclusione dei dettagli di intervallo per la raccolta di dati percentili
Impostazione della proprietà Percentuale di nuovi utenti
Attivazione dell'analisi SQL
Mantenimento di un numero appropriato di computer agente
Scelta del modello di carico appropriato
Sono disponibili tre tipi di modello di carico: costante, per passaggio e basato su obiettivo. Per scegliere il modello di carico appropriato per il test di carico, è necessario comprendere i vantaggi di ogni tipo. Per ulteriori informazioni, vedere Informazioni sul modello di carico.
Costante |
Un modello di carico costante risulta utile quando si desidera eseguire il test di carico con lo stesso carico utente per un periodo prolungato di tempo. Se si specifica un carico utente elevato con un modello di carico costante, si consiglia di specificare anche un tempo di riscaldamento per il test di carico. In questo modo, si evita di sottoporre il sito a uno stress eccessivo causato da centinaia di nuove sessioni utente che accedono contemporaneamente al sito. |
Passaggio |
Il modello di carico per passaggio è il più comune e utile tra quelli disponibili, in quanto consente di monitorare le prestazioni del sistema con l'aumento del carico utente. Monitorando il sistema via via che il carico utente aumenta, si può determinare il numero di utenti che è possibile supportare con tempi di risposta accettabili o, viceversa, il numero di utenti raggiunto il quale le prestazioni diventano inaccettabili. |
Basato su obiettivo |
Il modello di carico basato su obiettivo è simile al modello per passaggio, in quanto il carico utente aumenta in genere nel corso del tempo, ma consente di specificare che il carico non deve più aumentare quando un contatore delle prestazioni raggiunge un determinato livello. È ad esempio possibile utilizzare un modello di carico basato su obiettivo per continuare ad aumentare il carico finché uno dei server di destinazione non viene occupato al 75% e quindi mantenerlo stabile. |
Se nessun modello di carico predefinito soddisfa le proprie esigenze, è anche possibile implementare un plug-in test di carico personalizzato che controlla il carico utente durante l'esecuzione del test di carico. Per ulteriori informazioni, vedere Attività di test di carico avanzate.
Scelta del modello di connessione appropriato
Sono disponibili due tipi di modello di connessione: connessione per utente e pool di connessioni. Per scegliere il modello di connessione appropriato per il test di carico, è necessario comprendere i vantaggi di ogni tipo.
Connessione per utente |
Il modello di connessione per utente simula con la massima approssimazione il comportamento di un vero browser. Ogni utente virtuale che esegue un test Web utilizza una o due connessioni al server Web, che sono dedicate all'utente virtuale. La prima connessione viene stabilita quando viene emessa la prima richiesta nel test Web. La seconda connessione può essere utilizzata quando una pagina contiene più di una richiesta dipendente; queste richieste possono essere emesse in parallelo utilizzando le due connessioni. Queste stesse connessioni vengono riutilizzate per le richieste successive all'interno del test Web e vengono chiuse al termine dell'esecuzione del test Web. Lo svantaggio di questo modello è che il numero di connessioni aperte nel computer agente può essere fino a due volte superiore rispetto al carico utente e le risorse richieste per supportare un numero così elevato di connessioni possono limitare il carico utente che può essere gestito da un singolo agente del test di carico. |
Pool di connessioni |
Il modello di pool di connessioni consente di conservare le risorse dell'agente del test di carico condividendo le connessioni al server Web tra più utenti virtuali del test Web. In questo modello la dimensione del pool specifica il numero massimo di connessioni da stabilire tra l'agente del test di carico e il server Web. Se il carico utente è maggiore della dimensione del pool di connessioni, la connessione verrà condivisa dai test Web eseguiti per conto di utenti virtuali diversi. Condividere una connessione significa che se la connessione è in uso in un altro test Web, potrebbe essere necessario attendere prima che in un altro test Web venga emessa una richiesta. Il tempo medio di attesa per un test Web prima di inoltrare una richiesta viene registrato dal contatore delle prestazioni del test di carico Tempo medio di attesa connessione. Questo valore deve essere inferiore al tempo di risposta medio per una pagina. In caso contrario, la dimensione del pool di connessioni è probabilmente insufficiente. |
Frequenza di campionamento e raccolta dati
Scegliere una frequenza di campionamento appropriata in base alla durata del test di carico. Una frequenza di campionamento ridotta, ad esempio di cinque secondi, consente di raccogliere più dati per ogni contatore delle prestazioni rispetto a una frequenza più elevata. La raccolta di grandi quantità di dati per un periodo prolungato di tempo potrebbe generare errori di spazio su disco. Per i test di carico lunghi, è possibile aumentare la frequenza di campionamento per ridurre la quantità di dati raccolti. Anche il numero di contatori delle prestazioni influisce sulla quantità di dati raccolti. Per i computer sottoposti a test, la riduzione del numero di contatori consente di ridurre la quantità di dati raccolti.
È necessario sperimentare varie soluzioni per determinare la frequenza di campionamento ottimale per uno specifico test di carico. Tuttavia, nella tabella seguente sono riportate le frequenze di campionamento consigliate che è possibile utilizzare per iniziare.
Durata test di carico |
Frequenza di campionamento consigliata |
---|---|
< 1 ora |
5 secondi |
1 - 8 ore |
15 secondi |
8 - 24 ore |
30 secondi |
> 24 ore |
60 secondi |
Tempo interazione utente
Il tempo interazione utente per le richieste test Web ha un effetto significativo sul numero di utenti che possono essere supportati con tempi di risposta accettabili. Modificando il tempo interazione utente da 2 a 10 secondi è in genere possibile simulare un numero di utenti 5 volte maggiore. Tuttavia, se l'obiettivo è simulare gli utenti reali, è consigliabile impostare il tempo interazione utente in base al comportamento previsto di tali utenti sul sito Web. Aumentando il tempo interazione utente e il numero di utenti non si sottoporrà necessariamente il server Web a uno stress maggiore. Se il sito Web è autenticato, il tipo di schema utilizzato influirà sulle prestazioni.
Se si disattiva il tempo interazione utente per un test Web, potrebbe essere possibile generare un test di carico con una velocità effettiva superiore in termini di richieste al secondo. Se il tempo interazione utente è disattivato, è necessario ridurre il numero di utenti rispetto a quando è attivato. Ad esempio, se si disattiva il tempo interazione utente e si tenta di gestire 1000 utenti, è probabile che il server di destinazione o l'agente del test di carico risulti sovraccaricato.
Per ulteriori informazioni, vedere Informazioni sul tempo interazione utente.
Impostazione dei tempi di risposta obiettivo per le richieste test Web
Una delle proprietà di una richiesta test Web è il tempo di risposta obiettivo. Se si definiscono tempi di risposta obiettivo per le richieste test Web, quando il test Web viene eseguito in un test di carico l'analizzatore test di carico segnalerà la percentuale dei test Web per cui il tempo di risposta non ha soddisfatto l'obiettivo. Per impostazione predefinita, per le richieste Web non sono definiti tempi di risposta obiettivo.
Per ulteriori informazioni, vedere Procedura: impostare degli obiettivi del tempo di risposta delle pagine in un test Web.
Inclusione dei dettagli di intervallo per la raccolta di dati percentili
Le impostazioni di esecuzione includono una proprietà denominata Intervallo archiviazione dettagli. Se questa proprietà è attivata, il tempo richiesto per eseguire ogni singolo test, transazione e pagina durante il test di carico verrà archiviato nel repository dei risultati del test di carico. Ciò consente di visualizzare i dati del novantesimo e del novantacinquesimo percentile nell'analizzatore test di carico, nelle tabelle Test, Transazioni e Pagine.
Per impostazione predefinita, la proprietà Intervallo archiviazione dettagli è disattivata per due motivi principali. In primo luogo, la quantità di spazio richiesta nel repository dei risultati del test di carico per l'archiviazione dei dettagli di intervallo può essere molto elevata, soprattutto per i test di carico lunghi. Inoltre, è necessario molto tempo per archiviare questi dati nel repository dei risultati alla fine del test di carico, in quanto vengono archiviati negli agenti del test di carico fino al termine del test di carico.
Se lo spazio disponibile su disco è sufficiente, è possibile attivare la proprietà Intervallo archiviazione dettagli per salvare i dati percentili nel repository dei risultati del test di carico. Per attivare la proprietà Intervallo archiviazione dettagli sono disponibili due opzioni: StatisticsOnly e AllIndividualDetails. Con entrambe le opzioni viene determinato l'intervallo di tutti i singoli test, pagine e transazioni e dai singoli dati di intervallo vengono calcolati i dati percentili. Se si sceglie StatisticsOnly, i singoli dati di intervallo vengono eliminati dal repository dopo il calcolo dei dati percentili. L'eliminazione dei dati riduce la quantità di spazio richiesta nel repository. Tuttavia, se si desidera elaborare direttamente i dettagli di intervallo utilizzando gli strumenti SQL, scegliere AllIndividualDetails in modo da salvare tali dati nel repository.
Impostazione della proprietà Percentuale di nuovi utenti
Ogni scenario di un test di carico include una proprietà denominata Percentuale di nuovi utenti. Questa proprietà influisce sul modo in cui il motore di runtime del test di carico simula la memorizzazione nella cache che verrebbe eseguita da un browser. Il valore predefinito per Percentuale di nuovi utenti è 100, a indicare che ogni iterazione del test Web eseguita in un test di carico viene trattata come un nuovo utente del sito Web, che non dispone nella cache del proprio browser di alcun contenuto del sito Web ottenuto con visite precedenti. Pertanto, vengono scaricate tutte le richieste del test Web, comprese tutte le richieste dipendenti come le immagini.
Nota: |
---|
Un'eccezione è rappresentata dal caso in cui la stessa risorsa memorizzabile nella cache venga richiesta più di una volta in un test Web. |
Se si esegue il test di carico di un sito Web caratterizzato da un numero significativo di utenti che tornano a visitarlo e che probabilmente hanno immagini e altro contenuto nella cache locale, utilizzando il valore predefinito 100 per Percentuale di nuovi utenti verranno generate più richieste di download rispetto a quelle riscontrabili nell'utilizzo reale. Se si esegue il test di carico di un sito Web caratterizzato da un numero significativo di utenti che tornano a visitarlo, è necessario stimare la percentuale di accessi effettuati da utenti che visitano per la prima volta il sito Web e impostare la percentuale di nuovi utenti di conseguenza.
Attivazione dell'analisi SQL
Le impostazioni di esecuzione includono una proprietà denominata Analisi SQL attivata. Questa proprietà consente di attivare la funzionalità di analisi di Microsoft SQL Server per la durata di un test di carico. Si tratta di un'alternativa all'avvio di una sessione distinta di SQL Profiler durante l'esecuzione di un test di carico per diagnosticare problemi di prestazioni SQL. Se la proprietà è attivata, i dati dell'analisi SQL verranno visualizzati nell'analizzatore test di carico, nella pagina Tabelle della tabella Analisi SQL.
Per attivare questa funzionalità, l'utente che esegue il test di carico deve disporre dei privilegi SQL necessari per eseguire l'analisi SQL. Quando un test di carico viene eseguito in un rig, l'utente del controller deve disporre dei privilegi SQL. È inoltre necessario specificare una directory, solitamente una condivisione di rete, in cui verrà scritto il file dei dati di analisi. Al completamento del test di carico, il file dei dati di analisi verrà importato nel repository dei test di carico e associato a tale test, in modo che sia possibile visualizzarlo in seguito utilizzando l'analizzatore test di carico.
Per ulteriori informazioni, vedere Informazioni sulle impostazioni di esecuzione e Procedura: integrare dati di analisi SQL.
Mantenimento di un numero appropriato di computer agente
Se in un computer agente si registra un utilizzo della CPU superiore al 75% o se la memoria fisica disponibile è inferiore al 10%, tale computer risulta sovraccaricato. Aggiungere altri agenti al rig per assicurarsi che il computer agente non diventi il collo di bottiglia nel test di carico.
Per ulteriori informazioni, vedere Controller, agenti e rig.
Vedere anche
Attività
Risoluzione dei problemi relativi ai test di carico
Concetti
Analisi degli errori di un test di carico
Analisi delle violazioni delle regole di soglia