di: Pasquale Congiustì 08 Giugno 2009
Qualche tempo fa ci siamo occupati di un problema molto importante ma spesso sottovalutato in fase di progettazione e realizzazione di una applicazione Web: le performance. Come ben sappiamo un servizio Web o una applicazione in genere deve avere un tempo di risposta adeguato alle esigenze dell'utente e la potenza di calcolo attuale ci da la possibilità di aspettarci dei tempi di esecuzione molto bassi per le elaborazioni più comuni.
Nel suddetto articolo ci siamo occupati della fase di test, anzi, di stress test, dove attraverso uno strumento molto utile, JMeter, abbiamo visto come martellare un server e valutare l'eventuale degradazione delle prestazioni. Quando ci accorgiamo di questo degrado, dunque, quali sono gli accorgimenti da mettere in atto?
Impareremo in questo articolo a dimensionare (in inglese, tuning) una applicazione java enterprise (JEE). I concetti che esporremo sono dei concetti generali; noi vedremo un caso concreto applicato all'application server JBoss 5. Del resto la gestione del tuning di un application server dipende fortemente dall'implementazione dello stesso.
Uno strumento utile a valutare le prestazioni è il già citato Jmeter, ma, qualsiasi altro strumento vogliate utilizzare per mettere sotto assedio la vostra applicazione andrà bene. Altri due strumenti sono fondamentali a tal proposito:
http://localhost:8080/jmx-console (con l'installazione di default)Il collo di bottiglia di qualsiasi connessione è tipicamente legato alla gestione delle connessioni presso una base dati. Nel mondo "pre-enterprise" la gestione delle connessioni al database non era una cosa standard, quindi, utilizzando i driver JDBC, ci dovevamo preoccupare di creare una nuova connessione ad ogni uso, usarla e chiuderla. Un nuovo utilizzo avrebbe comportato una nuova creazione. Best practice è stata sempre infatti tenere un pool di connessioni ed allocarle alla bisogna.
Il data source di fatto rende standard questa best practice mettendo a disposizione dello sviluppatore una sorgente dati (un database, ma potrebbe essere qualsiasi sorgente) da interrogare. Compito dell'application server creare un pool di connessioni e gestirne il ciclo di vita. Quello che in fase di configurazione dovremo fare sarà dimensionare questo pool per non avere un eccessivo consumo di risorse (ogni oggetto nel pool consuma memoria) né tantomeno trovarsi nella situazione di creare troppe nuove connessioni, o, peggio ancora, di aspettare che una si liberi.
|
AppFuse: realizzare un'applicazione completa (implementare i servizi) |
Guida Apache StrutsIl primo e più utilizzato tra i framework MVC del mondo Java,... |
Guida Java SpringScoprire il lightweight container più famoso del mondo Java.... |
Guida Java 6Prendendo le mosse dalla guida Java, già presente su HTML.it,... |
Ogni mese, direttamente nella tua e-mail: articoli, script e guide su Java, Visual Basic, VB.Net ed i più diffusi linguaggi di programmazione.
Iscriviti alla newsletter
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |