JSF per un'applicazione Internet con traffico elevato, ad alto traffico

5

I, forse, ho fatto una scelta errata di andare con un Component-based Framework come JSF per un'applicazione web con traffico elevato e Internet. Anche se lo sviluppo con JSF è stato più facile, quello che temo ora è se JSF mi consenta quella scalabilità & prestazioni con tutti i problemi fondamentali e amp; problemi. Il risparmio di stato in un'app web ad alto traffico ha senso !?

Come faccio a mettere a punto la mia app JSF ora per renderla più performante sotto carico pesante? Sto già cercando di ridurre la struttura di stato / componente riducendo il numero di componenti nella pagina. Quali sono le altre cose che posso mettere a punto per rendere l'app JSF migliore?

    
posta Rajat Gupta 15.03.2012 - 20:14
fonte

4 risposte

4

Sarebbe una buona idea vedere quali bean con scope di sessione sono necessari per la sessione e quali possono essere solo ambiti ambito. Inoltre, prova a vedere dove puoi pulire realisticamente i bean con scope della sessione quando hai finito con loro in quanto ridurrai le dimensioni della sessione.

Se la memoria del server è fuori controllo, è possibile configurarla per archiviare lo stato della sessione sul lato client, tuttavia ciò aumenterà la dimensione delle richieste e delle risposte attraverso i server in modo che la larghezza di banda possa colpire.

Allo stesso modo, se la larghezza di banda è il collo di bottiglia, prova a memorizzare lo stato della sessione sul server per ridurre le dimensioni della richiesta e della risposta.

Martijn è corretto, tuttavia, è necessario dedicare del tempo a valutare correttamente i colli di bottiglia delle prestazioni con uno strumento di profilazione adeguato prima di puntare il dito contro JSF. Questo potrebbe anche essere un problema di database.

    
risposta data 15.03.2012 - 20:59
fonte
3

Quali caratteristiche di rendimento stai cercando di ottenere?

  1. Dovresti iniziare con la soglia accettabile. Ad esempio, non vuoi che gli utenti aspettino più di 3 secondi per il caricamento della pagina di accesso.
  2. Quindi è necessario creare un budget di tempo. Ad esempio, imposta i punti di temporizzazione ai confini della tua applicazione (browser, applicazione, DB, ecc.) In modo da sapere esattamente dove è trascorso il tempo.

Solo allora dovresti cercare di mettere a punto i singoli componenti all'interno della tua architettura dell'applicazione. JSF potrebbe non essere nemmeno un problema: -)

    
risposta data 15.03.2012 - 20:43
fonte
2

C'è un problema di prestazioni (forse) significativo con JSF: la creazione della "vista" (la rappresentazione lato server della struttura della pagina) è piuttosto costosa.

Almeno l'implementazione di riferimento (Mojarra) lo fa per ogni richiesta. Ciò significa che c'è un overhead alto (come in diversi 100 ms) se hai una pagina grande, anche se aggiorni solo una parte tramite AJAX.

Una possibile soluzione è "JSF stateless": link

Non è standard, ma sembra funzionare bene.

    
risposta data 22.05.2012 - 12:58
fonte
1

Un buon inizio per capire come funziona la performance JSF è dare un'occhiata a questo blog:

Informazioni su JSF 2 e Wicket: confronto delle prestazioni

Esiste un'applicazione di test con tutto il necessario per sintonizzare correttamente JSF. È abbastanza semplice perché di solito devi solo impostare javax.faces.PROJECT_STAGE web config param su Production e JSF si configurerà per te, ma ci sono alcuni parametri di configurazione aggiuntivi che aiutano solo un po '.

    
risposta data 21.05.2012 - 20:57
fonte

Leggi altre domande sui tag