Domanda

Sto sottoponendo a stress test un'applicazione Web .NET.L'ho fatto per 2 motivi:Volevo vedere come fossero le prestazioni in condizioni reali e anche per assicurarmi che non ci fosse sfuggito alcun problema durante i test.Avevamo 30 utenti simultanei nell'applicazione che la utilizzavano come farebbero durante il normale svolgimento del loro lavoro.La maggior parte degli utenti aveva più finestre aperte dell'applicazione.

  • 10 utenti:Non male
  • 20 utenti:Rallentare
  • 30 utenti:Molto, molto lento ma senza timeout

È stato caricato sul server di produzione.È un server virtuale con un processore Xeon da 2,66 G Hz e 2 GB di RAM.Stiamo utilizzando Win2K3 SP2.Abbiamo caricato .NET 1.1 e 2.0 e stiamo utilizzando SQLExpress SP1.

Successivamente abbiamo ricontrollato gli indici di tutte le tabelle ed erano tutti come dovevano essere.

Come possiamo migliorare le prestazioni della nostra applicazione?

È stato utile?

Soluzione

Questo è solo qualcosa a cui avevo pensato, ma controlla quanta memoria utilizza SQL Server quando hai più di 20 utenti: uno dei limiti della versione Express è che lo è limitato a 1 GB di RAM.Quindi potrebbe essere semplicemente una questione di memoria insufficiente disponibile per il server a causa delle limitazioni di Express.

Altri suggerimenti

  1. Potresti riscontrare problemi di concorrenza, a seconda di come viene eseguita l'applicazione.Prova a eseguire le tue letture con la parola chiave "nolock".

  2. Prova ad aggiungere alias di tabella per le tue colonne (ed evita l'uso di SELECT *), questo aiuta MSSQL, poiché non deve "indovinare" da quale tabella provengono le colonne.

  3. Se non lo sei già, passa a SPROC, ciò consente a MSSQL di indicizzare meglio i tuoi dati per il normale set di risultati di una determinata query.

  4. Prova a seguire il piano di esecuzione dei tuoi SPROCS per assicurarti che utilizzino gli indici che ritieni siano.

  5. Esegui una traccia sul tuo database per vedere come appaiono le richieste in arrivo.Potresti notare che un particolare SPROC viene eseguito più e più volte:generalmente è un buon segno memorizzare nella cache le risposte sul client, se possibile.(elenchi di ricerca, ecc.)

Aggiornamento:Sembra che SQL Server Express non sia il problema poiché utilizzavano lo stesso prodotto nella versione precedente dell'applicazione.Penso che il prossimo passo sia identificare i colli di bottiglia.Se sei sicuro che sia a livello di database, consiglierei di eseguire una traccia del profiler e di ridurre il tempo di esecuzione delle query più costose.

Questo è un altro collegamento che utilizzo per raccogliere statistiche dalle viste a gestione dinamica (DMV) di SQL Server e dalle relative funzioni di gestione dinamica (DMF).Non sono sicuro se possiamo usarlo nell'edizione Express.Scopri i dati nascosti per ottimizzare le prestazioni delle applicazioni.


Stai utilizzando SQL Server Express per un'app Web?Per quanto ne so, presenta alcune limitazioni per la distribuzione in produzione.

SQL Server Express è gratuito e può essere ridistribuito dagli ISV (previo accordo). SQL Server Express lo è ideale per l'apprendimento e la creazione di applicazioni desktop e server di piccole dimensioni.Questa edizione è la scelta migliore per fornitori di software indipendenti, sviluppatori non professionisti e hobbisti che creano applicazioni client.Se hai bisogno di funzionalità di database più avanzate, SQL Server Express può essere aggiornato senza problemi a versioni più sofisticate di SQL Server.

Vorrei controllare le prestazioni del disco sul server virtuale.Se questo è uno dei problemi, consiglierei di mettere il database su un mandrino separato.

Aggiornamento:Passare a un mandrino separato o aggiornare la versione di SQL Server come suggerisce giustamente Gulzar.

assicurati di chiudere le connessioni dopo aver recuperato i dati.

Esegui SQL Profiler per visualizzare le query inviate al database.Cerca query che siano:

  • restituendo troppi dati
  • costruito male
  • vengono eseguiti troppe volte
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top