Herramientas para monitorear la performance de Java en CICS

Todo lo relacionado con Java en mainframe.
Responder
quijair

Herramientas para monitorear la performance de Java en CICS

Mensaje por quijair » 09 May 2007, 20:05

Buenas a todos/as.

Tenemos una instalación en la que un módulo CICS está invocando a una clase Java en mainframe. La ejecución de la clase JAVA presenta grandes problemas de performance, y los tiempos son muy irregulares.

¿Alguien de ustedes tiene experiencia con herramientas para monitorear la performance de la ejecución de clases JAVA en CICS?

Muchas gracias de antemano, y un saludo a todos/as.

Luis Miguel Martinez Ch.

Re: Herramientas para monitorear la performance de Java en C

Mensaje por Luis Miguel Martinez Ch. » 10 May 2007, 11:06

1.- Con las estadisticas del CICS para java y el JVM para el pool, el profile y los programas.
2.- CICS performance monitor, CICS performance analyzer
3.- TMON for CICS

Luis Miguel Martinez Ch.

Re: Herramientas para monitorear la performance de Java en C

Mensaje por Luis Miguel Martinez Ch. » 10 May 2007, 11:22

4.- Mainview for CICS
5.- Tivoli Omegamon for CICS
6.- Reportes del RMF

Que problemas estas experimentando?

* Tiempo de respuesta
* Transacciones encoladas
* Memoria (Heap)
* Tiempos de espera (Waits)

????

quijair

performance de Java en CICS

Mensaje por quijair » 10 May 2007, 12:13

Hola.

Ante todo, gracias por la respuesta.

A nivel de aportar más información, indicamos que estamos probando 4 clases JAVA. Una de ellas es una clase JAVA "vacía", sin lógica (al ser invocada, automáticamente devuelve el control al programa principal). Las otras 3 clases están accediendo al LDAP del ZOS SERVER (una de ellas valida un password, otra retorna datos del usuario, y una tercera realiza un control de acceso del usuario a una aplicación).

Cada una de esas clases JAVA es llamada por un módulo CICS distinto. Nuestras pruebas consisten en realizar N llamadas distintas a cada uno de esos

Básicamente, los problemas que estamos presentando son los siguientes:

1. Tiempo de respuesta de la primera ejecución de la JVM (parece que el sistema demora en cargar y accionar la JVM por primera vez). Esto ocurre diariamente, en la primera ejecución. Esa primera ejecución demora unos 4-5 minutos.

2. Tiempo de respuesta de algunas ejecuciones. Si realizamos una ejecución repetida del módulo CICS que llama a la clase JAVA, algunas ejecuciones son rápidas (del orden de una o dos décimas de segundo), pero estas ejecuciones se alternan con algunas ejecuciones muy lentas (5-10-15 segundos). Todas las ejecuciones se realizan con los mismos parámetros de entrada. La ejecución de la clase JAVA "vacía" es mucho más rápida, pero igualmente presenta el problema de tiempos de respuesta elevados en algunas ejecuciones puntuales.

3. Tras una serie repetida de ejecuciones, el tiempo medio de respuesta acaba degradándose. Esto queda patente en la ejecución de la clase JAVA "vacía". Inicialmente, el tiempo de respuesta es de algunas milésimas de segundo. Posteriormente, tras unas 50 ejecuciones, ese tiempo se empeora.

En su momento, colocamos algunos TRACES tanto en el módulo CICS llamador como en la clase JAVA. Concretamente, colocamos un TRACE de fecha/hora en el módulo CICS, justo antes de la llamada a la clase JAVA, y otro TRACE de fecha/hora en la primera línea de código de la clase JAVA. Por lo que pudimos ver, cuando la clase demoraba diversos segundos, el mayor lapso de tiempo era el que transcurría entre esos dos TRACES, es decir, que había una especie de tiempo de espera entre la invocación de la clase JAVA y el comienzo efectivo de la ejecución, como si algún recurso quedase en una fila de espera.

Se ha probado a modificar parámetros del STACK del Language Environment, y se ha alterado la configuración de las clases JAVA para utilizar TFS (Temporary File Storage) en vez de HFS. Tras esas acciones, no hemos notado mejora sustancial.

Desconocemos cuál es exactamente el motivo de los elevados tiempos de respuesta. Intentaremos utilizar algunas de las herramientas sugeridas.

Cualquier sugerencia adicional será bien recibida.

Muchas gracias.

Luis Miguel Martinez Ch.

Re: performance de Java en CICS

Mensaje por Luis Miguel Martinez Ch. » 10 May 2007, 13:51

1. Tiempo de respuesta de la primera ejecución de la JVM

* Has checado los mensajes del Log del sistema, CICS, DB2 o de la aplicación??

* Revisa dentro de los monitores del RMF, la causa de que esta invocacion a JVM demore.

* En una aplicacion con la misma arquitectura nosotros probamos un workload de aprox. 160 usuarios concurrentes, un promedio de 15 transacciones por segundo y teniamos un tiempo de respuesta menos a 1 segundo


2. Tiempo de respuesta de algunas ejecuciones. Si realizamos una ejecución repetida del módulo CICS que llama a la clase JAVA, algunas ejecuciones son rápidas (del orden de una o dos décimas de segundo), pero estas ejecuciones se alternan con algunas ejecuciones muy lentas (5-10-15 segundos). Todas las ejecuciones se realizan con los mismos parámetros de entrada. La ejecución de la clase JAVA "vacía" es mucho más rápida, pero igualmente presenta el problema de tiempos de respuesta elevados en algunas ejecuciones puntuales.

* NO se estan encolando o entrando en WAIT por algun recurso las peticiones ? . . . .
* Checa los limites en el numero de threads y su parametrizacion.
* Que hay de los pooles de conexion?
* Accesas VSAM o vas a tablas DB2 (tambien residen en VSAMs).


3. Tras una serie repetida de ejecuciones, el tiempo medio de respuesta acaba degradándose.

x* Que hay con el Heap size y otros parametros del JavaVM, Size, numero de JVM shareable, etc?.
* Tienes suficiente memoria para soportar todos los threads?
* Que monitor tienes para revisar esto???

Responder