Cosa possiamo fare per far funzionare un'applicazione web asp.net più velocemente di prima. Quali sono tutti i tweaking richiesti per questo?Suggerimenti per rendere più veloce un'applicazione web asp.net
risposta
Per rendere più veloce l'esecuzione di qualsiasi applicazione, prima di tutto scoprire dove trascorre il suo tempo, quindi dedicare meno tempo a questa attività. Usa un profiler.
Un profiler semplifica il processo di rompere l'applicazione in pezzi più piccoli e quindi accelerare i singoli pezzi. Puoi farlo da solo se non puoi permetterti un profiler.
Ad esempio, si dice che il tempo medio di risposta è 4-5 secondi. È molto tempo. Cosa succede in quei 5 secondi? È tutto in attesa del database? Puoi provare a eseguire le tue query al di fuori dell'applicazione per vedere quanto tempo impiegano. È possibile eseguire SQL Server Profiler per registrare le transazioni del database durante un periodo di tempo, quindi eseguire il risultato tramite l'ottimizzazione guidata del database. Potrebbe avere alcune raccomandazioni per le modifiche agli indici del database.
È possibile utilizzare Fiddler o attivare la traccia della pagina per scoprire se le pagine sono troppo grandi. La traccia può dirti per quanto tempo stanno prendendo particolari fasi delle operazioni della pagina. Forse ti stai prendendo troppo tempo per rendere certe pagine.
Inoltre, è necessario osservare le prestazioni del proprio server. Stai usando troppa CPU? Troppa memoria? Stai spendendo il tuo tempo con il page thrashing, buttando fuori dalla memoria le pagine del processo di lavoro ASP.NET per accedere alle pagine di SQL Server, solo per fare in modo che quelle pagine vengano eliminate quando la query del database viene completata e il processo di lavoro ha bisogno correre di nuovo?
Rompere il problema in pezzi più piccoli, quindi fissare i pezzi.
La memorizzazione nella cache (sia di pagine che di dati) e l'ottimizzazione dell'accesso ai dati sono probabilmente gli elementi chiave per migliorare le prestazioni senza modificare l'hardware. Oltre a ciò è possibile esaminare il clustering/bilanciamento del carico per rendere disponibili più risorse.
L'ottimizzazione delle prestazioni per ASP.NET è un grande argomento. Infatti, nel tentativo di fornire una risposta esauriente alla tua domanda, ho scritto un libro al riguardo: Ultra-Fast ASP.NET: Build Ultra-Fast and Ultra-Scalable web sites with ASP.NET and SQL Server.
Da un livello elevato:
- Ridurre al minimo di andata e ritorno, sia tra client e server, e tra il server e DB
- concentrarsi sulle prestazioni percepite
- Ridurre al minimo il blocco delle chiamate
- Cache a tutti i livelli
- Ottimizza gestione I/O su disco
- Ottimizza il caricamento dell'oggetto browser e l'ordine di rendering
- Evitare di ricarica a piena pagina con AJAX, Silverlight e JavaScript
- Evitare sincrono DB scrive
- Usa il monitoraggio e la strumentazione
- Comprendere come SQL Server gestisce la memoria
- uso efficace di partizionamento al livello dati
Il mio approccio è ampiamente prescrittivo, piuttosto che teorico. Potresti dare un'occhiata alle recensioni su Amazon per maggiori dettagli su ciò che intendo.
Aggiunto alla coda del mio libro. Grazie per averlo collegato. –
Sono d'accordo con il caching. ASP.NET ha grandi meccanismi di caching integrati.
Inoltre, consiglierei di profilare l'applicazione, come già raccomandato sopra.
Ecco un collegamento a un articolo su alcuni profiler .NET gratuiti e anche a pagamento.
http://www.devcurry.com/2009/11/free-net-profilers-and-some-paid-ones.html
edit: si potrebbe voler controllare questa discussione StackOverflow così
https://stackoverflow.com/questions/308816/any-good-free-net-profiler
Spero che questo aiuti.
Questo è un grande argomento, ma le principali cose che vengono in mente:
- mantenere dimensioni ViewState giù
- meno postback. Usa javascript per evitarli quando possibile. I controlli di convalida sono un buon esempio di come questo possa funzionare.
- avere una buona strategia di caching
C'è anche non-asp.cose net-specifici, come queste:
- assicurarsi che la vostra query di database non sono bogging giù
- ridurre al minimo le richieste HTTP
- mantenere le risorse statiche in un dominio senza cookie separata
- profilo prima di trascorrere del tempo ottimizzando in modo da non perdere tempo ottimizzando la cosa sbagliata
si potrebbe anche trovare utile questa domanda:
https://stackoverflow.com/questions/72394/what-should-a-developer-know-before-building-a-public-web-site
Che tipo di applicazione? Hai un database? Stai facendo calcoli? Domanda soggettiva .... –
L'applicazione è un'applicazione web asp.net con 82 pagine Web, 34 report (sia grafici che di testo), DB è sql server 2005. Il tempo di risposta per la pagina in media è di circa 4-5 sec . – HotTester
Grazie per tutte le tue risposte e apprezzo molto tutti i tuoi suggerimenti ... Sono andato alla seguente soluzione: prima ho ottimizzato tutte le query con uno strumento di ottimizzazione delle query. In secondo luogo ho aumentato la memoria del server che ospita l'applicazione (in precedenza era 512 mb ram ... e ora 2 GB). Infine ho eliminato tutti i viewstate indesiderati ...--> Il risultato è che l'applicazione sta funzionando abbastanza velocemente e il tempo medio di risposta è ora di 1-2 secondi. Tuttavia, se qualcuno ha ancora qualche punto da condividere con i più graditi – HotTester