Tutti,JSF Session e tunning
Sto facendo una ricerca su come a ridursi la quantità di memoria di sessione nostra applicazione JSF sta consumando su una base per utente.
Stiamo usando MyFaces 1.1.7 e 1.1.5 Tomahawk in esecuzione su IBM Websphere 7.0 cerotto 19. (Non in grado di aggiornare uno di questi elementi in questo momento)
linea guida di IBM è che la dimensione della sessione dovrebbe essere meno di 5k - una media di circa 2.5k per non influire sulle prestazioni del server e della replica della sessione. Attualmente stiamo usando memoria su memoria ma stiamo guardando al database come suggerito da IBM.
Il nostro sito era in esecuzione a circa 35 milioni per utente. Abbiamo modificato il numero di stati di visualizzazione da 100 a 10 e lo abbiamo ridotto a circa 4 milioni.
Abbiamo diversi bean di supporto che sono attualmente scope della sessione e stanno cercando di cambiarli per richiedere scope.
Ho anche trovato il seguente: http://www.econsulting.nl/images/pdf/Tuning%20JSF%20Applications-%20J-Spring%202008.pdf che sembra avere molte informazioni su come JSF gestisce determinati contenuti sulle pagine. Questo è ancora sotto inchiesta per assicurarsi che ciò che è affermato abbia un senso.
Ho anche letto da qualche parte che indipendentemente dal fatto che il bean di backing gestito sia sessione o ambito di richiesta è che lo stato di visualizzazione avrà ancora il bean e il suo contenuto. Quindi la dimensione dello stato della vista non cambierà. Alla ricerca di chiarimenti su questo.
Le domande sono altre che affrontano lo stesso problema in cui le applicazioni JSF tendono a consumare molta memoria per una determinata sessione di utenti?
Quali sono alcune delle migliori pratiche per ridurre questa dimensione, se presente, o solo in questo modo quando si utilizza JSF?
Problemi con la replica di sessione su IBM WebSphere quando si esegue un'applicazione JSF?
C'è qualche documentazione là fuori su come JSF/MyFaces utilizzi la memoria heap - Young vs old o dovrebbe essere considerata anche in questo ambito? Sintonizzazione della raccolta dei rifiuti?
Quello che vediamo come risultato di ciò è che nel caso in cui un utente salti su un altro server, i dati di sessione non sono presenti a causa di quanto sono grandi i dati e quanto tempo ci vuole per replicare. Problemi relativi all'esperienza utente.
Abbiamo riscontrato un problema in cui è emerso che le modifiche all'oggetto nella sessione non venivano aggiornate correttamente e che sono state apportate alcune modifiche alla gestione della sessione in cui personalizziamo le impostazioni in modo che tutti gli attributi di sessione vengano scritti. Guardando il file .jar sembra che myFaces stia effettuando correttamente la chiamata quando il contenuto dell'oggetto nella sessione cambia. Pertanto, il listener di sessioni WebSphere dovrebbe rilevare tale modifica.
chiedendo come è ridotto la dimensione dello stato della sessione. – Ben
Esiste un'impostazione di configurazione in web.xml che consente di ridurre il numero di visualizzazioni mantenute nella sessione. Di recente riduciamo fino a 3 e questo ha fatto perdere molto le dimensioni della sessione utente. L'obiettivo su cui stiamo lavorando è la dimensione della sessione 1M per un determinato utente. Ciò si tradurrà nella riduzione del numero di bean che sono l'ambito della sessione e nel rifare parti delle pagine in base al link fornito nel problema originale. – boyd4715