Analizar el rendimiento de Enterprise JavaBeans
Analizando el rendimiento es probablemente una de las tareas más complejas en el diseño de cualquier aplicación. Es una ciencia imprecisa, porque hay muchos factores que entran en juego. Estos son aumentados en Enterprise JavaBeans (EJB) aplicaciones, donde el rendimiento depende en gran medida de la implementación del contenedor EJB utiliza. La conclusión es que no se puede saber si usted está tomando las decisiones correctas de rendimiento hasta que probarlos.
A continuación se presentan algunas cuestiones que usted debe tener en cuenta al considerar los problemas de rendimiento:
- No todos los contenedores EJB son creados iguales. Mientras que cada contenedor EJB debe ser conforme a la especificación EJB, los vendedores tienen una amplia libertad en la aplicación del contenedor EJB. Sus exigencias se centran en los resultados de las operaciones, no en la eficiencia de una operación. Algunos vendedores van a hacer un mejor trabajo con las diferentes partes de un contenedor EJB. Usted debe determinar dónde las eficiencias se pueden obtener en un contenedor EJB y donde los cuellos de botella de rendimiento van a ocurrir. La única manera de saber con certeza es que probar antes de comprar. Incluso después de comprar una solución, las principales decisiones de diseño, como si desea o no utilizar beans de entidad EJB, se deben probar.
- El rendimiento puede depender de la eficacia de su aplicación. Hay reglas generales que se pueden utilizar para ayudar a determinar qué aplicación diseños son mejores que otros. Sin embargo, estas directrices pueden ser fácilmente invalidadas con una aplicación descuidada. La mejor manera de garantizar a evitar implementaciones descuidados es realizar regularmente las revisiones de código - ahí es cuando te sientas un poco con todas sus codificación compañeros de trabajo y hacer que revisen su trabajo - durante su proyecto EJB. Usted debe enfocar sus revisiones de código en el análisis de la fuente y la garantía de que es a la vez bien diseñado y eficiente. Las revisiones de código ofrecen una gran oportunidad para que los programadores aprendan unos de otros.
- Desarrollar un prototipo para probar su hipótesis de rendimiento. He aquí un escenario de ejemplo. Como un desarrollador de aplicaciones EJB, debe decidir pronto si desea o no utilizar beans de entidad para gestionar la interacción con una base de datos. Sus dos opciones básicas son
• Crear beans de entidad para gestionar la interacción de base de datos. Los beans de entidad pueden simplificar su interacción base de datos desde el punto de vista de programación de aplicaciones. Pero también pueden exigir una reducción del rendimiento. Parte de esa pena se puede controlar en la forma en que se implementa beans de entidad - es decir, mediante el uso de interfaces locales frente a las interfaces remotas o haciendo beans de entidad objetos de grano grueso.
• Base de datos de código llamadas JDBC directamente en beans de sesión y evitar el uso de beans de entidad en conjunto. JDBC puede ser más difícil de trabajar que el uso de beans de entidad con persistencia gestionada por contenedor. Este curso también puede socavar su capacidad para aprovechar las ventajas de las transacciones gestionadas por contenedor EJB.
Para determinar cuál de los dos cursos es más apropiado, puede realizar una prueba sencilla:
1. Crear un bean de entidad y un bean de sesión que ambos realizan operaciones en el mismo conjunto de datos de una base de datos.
2. Escriba un programa simple que mide la cantidad de tiempo requerido para invocar una serie de inserciones, actualizaciones, consultas, y los cambios en la base de datos.
Este segundo programa debe invocar al bean de sesión para una prueba y el bean de entidad para otra prueba - la realización de la misma serie de operaciones en cada uno.
3. Analizar los resultados para determinar si el rendimiento va a ser un problema.
Si desea un análisis de rendimiento de grano más fino, se puede medir el tiempo los pasos individuales - para identificar la operación más cara - y luego tratar de modificar las operaciones para generar mejoras de rendimiento.
Para un bean de entidad, es posible que desee para medir el desempeño de las siguientes operaciones:
- ¿Cuánto tiempo se tarda en obtener una referencia a una interfaz remota o una interfaz local?
- ¿Cuál es la diferencia en el rendimiento entre realizar una actualización de una interfaz remota y una interfaz local?
- ¿Cuál es la diferencia entre la actualización de varias filas en una base de datos en JDBC y realizar una actualización de varias filas utilizando el método de inicio de un bean de entidad?
Las respuestas a estas preguntas serán diferentes de contenedor EJB al contenedor EJB y también serán influenciados por: a) el controlador JDBC que elegir- b) si se utiliza o no pooling- conexión de base de datos y c) la eficiencia de sus implementaciones de la bean de entidad y el bean de sesión. Probablemente se sorprenderá por algunos de los resultados que obtiene - pruebas como éstas tienen una manera de desafiar sus suposiciones sobre el desempeño de los beans de entidad.
Cuando usted está sintonizando un EJB para el rendimiento, no hacer cambios al azar. En su lugar, se centran su atención en los pasos de la aplicación que cuesta más en términos de rendimiento.
Nota:Mediciones de rendimiento por lo general revelan que un proceso de negocio tiene sólo uno o dos puntos en los que se pueden hacer mejoras significativas. Esta observación se ha hecho con la suficiente frecuencia que llevó a la creación de la regla de Pareto 80-20. Esa norma establece que el 80 por ciento del tiempo de ejecución de un programa se debe al 20 por ciento del código. Su objetivo debe ser la identificación de los cuales el 20 por ciento del código es el más costoso en términos de recursos del sistema y se centran en la optimización de esa porción.