2011-10-17 22 views
6

Todo,JSF sesión y tunning

que estoy haciendo alguna investigación sobre cómo reducir la cantidad de memoria sesión de nuestra aplicación JSF está consumiendo en una base por usuario.

Estamos utilizando MyFaces 1.1.7 y 1.1.5 Tomahawk que se ejecuta en IBM Websphere 7.0 parche 19. (No es capaz de actualizar cualquiera de estos elementos en este momento)

guía de IBM es que el tamaño de la sesión debe ser menos de 5k: promedie alrededor de 2.5k para no afectar el rendimiento del servidor y la replicación de la sesión. Actualmente estamos usando Memory to Memory, pero estamos considerando movernos a la base de datos como lo sugiere IBM.

Nuestro sitio funcionaba a unos 35M por usuario. Cambiamos el número de estados de vista de 100 a 10 y eso disminuyó a alrededor de 4M.

Tenemos varios respaldos que actualmente son el alcance de sesión y estamos buscando cambiarlos para solicitar alcance.

También encontré lo siguiente: http://www.econsulting.nl/images/pdf/Tuning%20JSF%20Applications-%20J-Spring%202008.pdf que parece tener mucha información sobre cómo JSF maneja cierto contenido en las páginas. Esto todavía está bajo investigación para asegurarse de que lo que se dice tenga sentido.

También he leído en alguna parte que, independientemente de si el bean de respaldo gestionado es sesión o alcance de solicitud, el estado de vista seguirá teniendo el bean y su contenido. Por lo tanto, el tamaño del estado de la vista no cambiará. Buscando aclaración sobre este.

Las preguntas son, ¿hay otras que enfrentan el mismo problema en el que las aplicaciones JSF tienden a consumir mucha memoria para una sesión de usuarios determinada?

¿Cuáles son algunas de las mejores prácticas para reducir este tamaño, si corresponde, o es así cuando se usa JSF?

Problemas con la replicación de sesión en IBM WebSphere cuando se ejecuta una aplicación JSF?

¿Existe alguna documentación sobre cómo JSF/MyFaces hace uso de la memoria del montón? ¿Joven frente a viejo o debería incluso considerarse en este ámbito? ¿Recolección de basura?

Lo que vemos como resultado de esto es que, en el caso de que un usuario salte a otro servidor, los datos de sesión no están presentes debido a qué tan grandes son los datos y cuánto tiempo lleva replicar. Problemas de experiencia de usuario.

Hemos visto un problema por el que parecía que los cambios en el objeto de la sesión no se actualizaban correctamente y hemos realizado algunos ajustes de administración de sesión en los que personalizamos la configuración para que se escriban todos los atributos de la sesión. Al mirar el archivo .jar, parece que myFaces realiza la llamada correctamente cuando cambia el contenido del objeto en la sesión. Entonces, el oyente de sesiones de WebSphere debería estar captando ese cambio.

+0

pregunta cómo redujera el tamaño del estado de sesión. – Ben

+1

Hay una configuración en el archivo web.xml que le permite reducir el número de vistas que se guardan en la sesión. Recientemente reducimos a 3 y eso disminuyó mucho el tamaño de la sesión del usuario. El objetivo para el que estamos trabajando es el tamaño de la sesión de 1M para un usuario determinado. Esto dará como resultado la reducción del número de beans que son el alcance de la sesión junto con la reutilización de partes de las páginas en función del enlace proporcionado en el problema original. – boyd4715

Respuesta

2

Usted puede tratar de salvar el estado de vista en el cliente, pero no estoy seguro de que MyFaces 1.1.7 ya soporta este