Quali strategie avete impiegato per migliorare le prestazioni delle applicazioni web?[chiuso]

StackOverflow https://stackoverflow.com/questions/22704

Domanda

  • Qualsiasi esperienza personale nel superare le prestazioni delle applicazioni web ostacoli?
  • Eventuali strategie consigliate per migliorare le prestazioni di una applicazione web basata sui dati?

Il mio team di sviluppo lavora su una applicazione web (JSP rapporti, HTML, JavaScript) che utilizza un database Oracle (PL/SQL).Le funzionalità chiave l'applicazione offre è in relazione, in cui un utente può ottenere un file Pdf di relazioni ad alto livello e il drill-down per abbassare i livelli di dettagli di supporto.

Come il numero di supportare record di dettaglio è cresciuto in milioni, le prestazioni del sistema è notevolmente degradata.Sulla base dell'attuale analisi delle metriche, il collo di bottiglia sembra essere la logica di colpire il DB e DB prestazioni.Cambiando il modello DB e ri-fatto lato server logica è attualmente in corso di esplorazione.

La creazione di partizioni, indicizzazione, spiega piani, e l'esecuzione di statistiche sono cose che sono state fatte su DB da un lato per cercare di aiutare a migliorare le prestazioni.Mentre hanno aiutato, non hanno risolto il problema in modo soddisfacente.La cosa più difficile nell'analizzare i dati di performance è che il database e i server web sono amministrato in remoto da una parte diversa dell'organizzazione, in modo che gli sviluppatori non hanno regolare accesso completo a vedere cosa succede (soprattutto in ambiente di produzione, che non è esattamente speculare in qualsiasi altro sviluppo/ambiente di test).

È stato utile?

Soluzione

Mentre la mia risposta non può contenere eventuali misure concrete per aiutare questo è dove iniziare.

Prima cosa che vorrei fare è cercare di buttare via tutte le ipotesi su ciò che il problema è e prendere seguente procedura per installare le metriche ovunque si può.Lasciate che le metriche di guida, piuttosto che la tua intuizione.Ho inseguito molti, molti, molti conigli bianca di andare su un sospetto...let me down di volte di più di quello che sono stato a destra.

Altri suggerimenti

Hai controllato questo?

Le migliori pratiche per la realizzazione di pagine web veloce da Yahoo!'s Eccezionali Prestazioni della squadra

Se davvero problemi al motore, questo non aiuta.Ma abbiamo usato i loro consigli per un grande effetto di rendere il nostro sito più veloce, e c'è ancora molto da fare.

Anche utilizzare il YSlow add-on per Firebug.Si può essere sorpresi quando si vede dove il tempo effettivo è stato preso.

Avete considerato la possibilità di costruire i vostri dati prima del tempo?In altre parole, ci sono dei gruppi di dati che vengono richiesti di nuovo e di nuovo?Se così li hanno pronti prima che l'utente richiede.Io non sono esattamente parlando di memorizzazione nella cache, ma penso che è una parte dell'equazione.

Potrebbe essere la pena di fare un passo indietro dal codice e di esaminare i modelli di utilizzo del sistema.Per esempio, se si sta mostrando persone al mese di inventario o di comunicazione commerciale fare la guardano solo alla fine del mese?Se è così basta costruire i dati relativi all'ultima giornata e il negozio.Se si guarda, tutti i giorni, magari provare a costruire ogni giorno precedente, i risultati e i risultati di memorizzazione e di evitare il calcolo.Credo, in definitiva, sto spingendo per un Programmazione Dinamica soluzione;se si conosce una risposta non risolve il problema di nuovo.

Come Webjedi dice, le metriche sono tuo amico.

Anche guardare il vostro stack e vedere dove ci sono opportunità per la memorizzazione nella cache - quindi impiegare senza pietà ove possibile!

Come ho detto in un'altra domanda:

Utilizzare un profiler. Sì costano soldi, e il loro utilizzo può a volte essere un po ' imbarazzante, ma offrono molto di più reale di prove e non di congetture.

Gli esseri umani sono universalmente male a indovinare dove le prestazioni sono i colli di bottiglia.Sembra proprio essere qualcosa che i nostri cervelli non sono costruire per fare molto bene.Può sembrare ovvio, si possono avere grandi idee su cosa sia il problema, ma il mondo reale spesso risulta essere facendo qualcosa di diverso.E ottimizzare la parte sbagliata del codice significa, nel migliore dei casi, un sacco di lavoro per un minimo di beneficio.Più spesso rende le cose più lento, e a volte si rompe cose del tutto.Quindi, prima di apportare eventuali modifiche per ragioni di ottimizzazione, si dovrebbe sempre avere la prova reale da un profiler o di altro strumento di precisione.

Non tutti i profiler di costo (costo extra) soldi.Per .Net, io sto usando con successo una vecchia build di NProf (attualmente abbandonato, ma che funziona ancora per me) per l'analisi di mio ASP.Net applicazioni.Per SQL Server, la query profiler è parte del pacchetto.C'è anche il CLF Profiler da MS, ma non sono mai riuscito a farlo funzionare correttamente.

Detto questo, i profiler sono sicuramente la strada da percorrere.In questo modo è possibile vedere dove il vostro programma di trascorrere la maggior parte del suo tempo, e non concentrarsi su cose che tu pensi che sono lenti.Plus significa che non devi scrivere nulla nel codice per registrare le metriche.

Come ho accennato all'inizio, ci sono diversi tipi di profiler.La tre mi trovo più utile applicazione profiler, che consentono di verificare che funzioni effettivamente spendono la maggior parte del vostro tempo.Il secondo è di SQL profiler che consentono di vedere quanto tempo la vostra query per l'esecuzione.Il terzo è la memoria profiler, che aiutano a mostrare il tipo di oggetti che la vostra memoria è di essere utilizzato.Tutti e tre di questi sono davvero utili, e anche se non li uso ogni giorno, i tempi si fanno uso di loro vi farà risparmiare un sacco di mal di testa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top