viernes, 14 de septiembre de 2012

Procesos muy largos en Weblogic son terminados de manera forzada


A veces nos podemos encontrar con que algunas de nuestras aplicaciones o WebServices que a simple vista  funcionan correctamente, son terminados de manera forzada por el servidor de WebLogic. Vuelven a revisar la aplicacion o WS y comprueban que está correcto. Pues sí, posiblemente el problema no sea la aplicación o WS, sino una mala configuración de los parámetros del WebLogic Server.

WebLogic Server posee la capacidad de poder detectar procesos "estancados", estos procesos estancados son los que llevan mucho tiempo en estar ejecutandose (no en estar ociosos), sin embargo, despues de un largo tiempo no retornan una respuesta. WebLogic no sabe si en realidad el proceso que está ejecutando es muy largo o está estancado, y la decision que toma es categorizarlo como un "proceso estancado". Luego de detectarlo, toma la decision de finalizarlo de manera forzada y así es como nuestra aplicación o WS termina abruptamente.

Lo bueno de tener herramientas de Oracle, es que "casi" todo es totalmente personalizable. Existen dos parametros que pueden ser afinados para poder detectar los procesos "estancados". Se puede cambiar el intervalo de tiempo en que es monitoreado todos los procesos que se están ejecutando, y también se puede cambiar el tiempo que debería llevar ejecutandose un proceso antes de poder ser categorizado como "proceso estancado".

Para poder cambiar estos parámetros debemos seguir lo siguiente:

  1. Logearse en la consola web del WebLogic Server.
  2. Clic en Environment.
  3. Clic en Servers.
  4. Clic en el ManagedServer en que está deployada nuestra aplicacion o nuestro WS.
  5. Clic en la pestaña Configuration.
  6. Clic en la sub pestaña "Tuning".
Estando ahi los parámetros que debemos modificar son:

  • Stuck Thread Max Time: El tiempo que un proceso deberia llevar ejecutandose (no ocioso) para poder ser categorizado como un "proceso estancado".
  • Stuck Thread Timer Interval: A cada cuanto tiempo se debería monitorear los procesos en ejecución para detectar "procesos estancados".

A continuación una imagen donde se puede ver estos parámetros:



Adicionalmente a estos parámetros existe uno más. Este puede ser encontrado de la siguiente manera:

  1. Logearse en la consola web del WebLogic Server.
  2. Clic en Environment
  3. Clic en Servers
  4. Clic en la pestaña "Configuration".
  5. Clic en la sub pestaña "Overload"
Ahi podemos encontrar el parámetro Stuck Thread Count el cual indica el número de "procesos estancados" que ese ManagedServer debería de tener antes de poder pasar a un estado de "FAILED".

Recuerde reiniciar el Server despues de realizar algun cambio en estos parámetros.





3 comentarios:

  1. Muy buena nota tecnica

    ResponderEliminar
  2. Cuanto es el tiempo estimado en la que se debe cambiar el Thread Max Time?

    ResponderEliminar
  3. Axel, depende del tiempo que toman los procesos de tu aplicación

    ResponderEliminar

Oracle ACE Director Award - Deiby Gómez

Thanks #OracleACE Program for this awesome certificate recognizing the work I have done in the community for the last year. Looking forwa...