sábado, 24 de septiembre de 2011

Tunea tu Report Server Oracle 10g

A continuación este artículo les ayudara a mejorar el rendimiento y desempeño se nuestro OASR2 10.1.2 (Oracle Application Server).

Report Parameter
 Si tenemos varios usuarios que desean ejecutar reportes e informes pero se quejan que esperan mucho tiempo (porque es solo un formulario que imprimen). Lo ideal es que se optimice el reporte para ver si se le puede hacer algún tuneo a la consulta, pero si son reportes que por su naturaleza son complejos y necesitan de un tiempo de entre 10 y 60 segundos a nivel de del reporte no podemos hacer nada para mejorarlo, lo que podemos hacer es configurar nuestro report server para que se creen más procesos de manera automática si existen reportes en cola d ejecución. La configuración inicial de report server solo permite ejecutar uno a uno las colas de reportes, por lo que puede suceder que esta cola de impresión se demore en atenderse si hablamos de reportes complejos.
Para esto nos podemos ayudar de los parámetros del sistema de reporte

  • Sistemas Iniciales (initEngine)
  • Máximo de Sistemas (maxEngine)  
Sistemas Iniciales (initEngine): Indica el número de procesos iniciales que empezaran atender las peticiones de ejecución de reportes. El valor por defecto es 1.
Máximo de Sistemas (maxEngine): Indica el número de procesos máximo que se pueden crear para atender las peticiones de ejecución de reportes. El valor por defecto es 1.

Lo recomendable es que Máximo de Sistemas (maxEngine) se configure con la cantidad de procesadores que posee el servidor donde reside el servicio de reportes.
Sistemas Iniciales (initEngine) yo recomiendo que se deje su valor en 1, para que luego no queden procesos subutilizado que ocupan memoria. Por qué ? Bueno como les dije este parámetro indica la cantida de procesos iniciales que atenderán las peticiones de impresión, Ejemplo:
Si maxEngine es igual 4 y initEngine es igual a 4 entonces desde que se levanta el servicio de report habrán 4 procesos para impresiones estén o no haciendo solicitudes
Si maxEngine es igual 4 y initEngine es igual a 1 entonces desde que se levanta el servicio de report habrá 1 proceso para impresiones estén o no haciendo solicitudes, y si el proceso esta ocupado se procederá a crearse otro para atender una petición, luego de finalizar este nuevo proceso se eliminará.

 Configuración desde el EM de Oracle:

1-Ingresamos a la url del em y digitamos el usuario y clave.

2-Seleccionamos nuestro componente del sistema Reporte que deseamos configurar

3-Vamos a la parte inferior de Administración y damos click al link configuración.

4-Cambiamos el valor del parámetro (en mi caso tengo 2 procesadores con 4 núcleo y lo configuro con 8) y damos click en aceptar.

 5-Indicamos que si deseamos reiniciar el servicio de reportes.

6-Listo, ya tenemos nuestro servidor de reportes configurado para que pueda atender a 8 solicitudes a la vez.



Configuración desde el archivo:
1-Editamos el archivo de configuración .conf del servidor de reportes ubicado en %OAS_HOME%\reports\conf, el nombre de mi servidor de reportes es srv_reporte01 por lo que el archivo de configuración tendrá el mismo nombre.
2-Buscamos dentro de la sección engine y buscamos los parámetros initEngine y maxEngine. Luego de encontrarlo modificamos sus valores.
<engine id="rwEng" class="oracle.reports.engine.EngineImpl" initEngine="1" maxEngine="8" minEngine="0" engLife="50" maxIdle="30" callbackTimeOut="90000">
<property name="sourceDir" value="E: \Reportes "/>
<!--property name="tempDir" value="your reports temp directory"/-->
<!--property name="keepConnection" value="yes"/-->
</engine>

 3-Bajamos y subimos el servicio del report server, vamos al %OAS_HOME%opmn\bin.    opmnctl stopproc ias-component=srv_reporte01
    opmnctl startproc ias-component=srv_reporte01

 




  1. Listo, ya tenemos configurado nuestro servidor de reportes para que pueda atender 8 solicitudes a la vez

Nota: El cambio de este parámetro involucra reiniciar el servicio de reportes, por lo que se debe de tener en consideración que el servicio estará fuera lo que tarde en reiniciarse.

2 comentarios:

  1. Buenas tardes te hago una consulta....
    Teniendo definido el valor MaxEngine, en el archivo de configuracion, porque puede ser que no llegue a abrir otro motor para procesar, cuando le llegua mas de una peticion.
    Usamos Oracle Reports 11. Desde ya muchas gracias.

    ResponderEliminar
    Respuestas
    1. Saludos, le pusiste la misma cantidad de nucleos que tiene el host?, podrias probar configurando initEngine para ver si se crean los proceso

      Eliminar