2010-02-05 4 views
6

Estoy usando Hibernate para trabajar en un nuevo proyecto, y mientras trabajo me doy cuenta de que mi visión original para la aplicación puede no ser su destino. Los datos que creo que no se van a solicitar con frecuencia (y, por lo tanto, no se cargan) podrían ser necesarios para el 85% de las solicitudes. Por el contrario, los datos que estoy cargando bajo la suposición de que se necesitarán podrían no ser necesarios tan a menudo como creo.Optimizar un lanzamiento posterior al modelo basado en ORM

¿Hay alguna herramienta de perfilado o método para analizar el uso de ORM (específicamente: Hibernate) que pueda ayudarme a ajustar mi aplicación una vez que haya alcanzado la masa crítica?

Lo único que se le viene a la mente es escribir algunas secuencias de comandos de Selenium que imiten el uso real y realizar pruebas de carga con diferentes configuraciones. Parece que podría funcionar, pero también se siente como una forma muy redonda de obtener la información que busco. Hay tiene para ser una mejor manera ...

Respuesta

1

¿Hay alguna herramienta o método de perfiles de analizar el uso de ORM (en concreto: Hibernate) que me puede ayudar a sintonizar mi solicitud después de que ha alcanzado una masa crítica ?

Hibernate 3 gather statistics en tiempo de ejecución. Puede valer la pena echar un vistazo. Hay una sección "Monitoring performance" en el documento de hibernación.

La única cosa que viene a la mente es escribir algunos scripts de selenio que uso real imitan y hacen pruebas de carga con configuraciones. Parece que podría funcionar, pero también se siente como una forma muy redonda de obtener la información que estoy buscando.

Primero debe intentar capturar una carga de trabajo real. Luego averigua cómo reproducirlo.

De lo contrario, seguirá siendo parcial y puede generar una carga que en realidad no representa la realidad de todos modos. Si no puede capturar una carga de trabajo real, discuta con el posible usuario final para ver cómo utiliza la aplicación y asegúrese de que su escenario esté lo más cerca posible del comportamiento real del usuario final.

0

Utilice el perfilador/registrador SQL de su base de datos para mantener las pestañas de su base de datos de producción. Esté pendiente de las consultas de carga diferida o las consultas frecuentes que pueden indicar un problema N + 1 (iterar sobre una colección diferida, cargar cada objeto individualmente).

No conozco ningún (ningún) ORM que proporcione dicha capacidad.

1

"... ¿me ayuda a ajustar mi aplicación una vez que ha alcanzado la masa crítica?"

Esto es importante.

Estás sintonizando tu aplicación, como un todo. Aplicación + estructura de base de datos + Hibernate mapeos ORM + cualquier otra cosa.

Su aplicación debe tener registros que pueda usar para ajustar su aplicación. Si no tiene un registro adecuado, ahora es el momento de agregar un conjunto adecuado de registros para determinar qué casos de uso se están utilizando y qué está sucediendo.

Los registros de sintonización son tan importantes como los registros de depuración. Y son una parte de primera clase de tu aplicación.

1

El Hibernate Profiler puede generar informes en vivo a partir de las estadísticas de tiempo de ejecución de hibernate. Se generan varias alertas, como advertencia sobre SELECT N + 1.

Se puede usar en un sistema de integración continua.

Cuestiones relacionadas