Inicio > WebLogic > Threads stuck en WebLogic

Threads stuck en WebLogic

En este post vamos a explicar qué son y cómo analizar los threads stuck en WebLogic. Ante todo hay que tener en cuenta que el hecho que un thread sea considerado stuck (traducción literal: “atascado”) no implica, necesariamente, que existe alguna problemática de fondo.

¿Qué es un thread stuck?

Cuando un thread está levantado durante demasiado tiempo, ya sea haciendo una pausa (por ejemplo, por un sleep) como realizando trabajo activo (como calcular decimales del número pi), se marca como stuck. Este thread no ha sido capaz de completar su trabajo y, por lo tanto, no acepta nuevas peticiones. El problema viene cuando un proceso empieza a marcar todos sus threads como stuck.

¿Qué podemos hacer para detectarlos?

WebLogic detecta automáticamente los threads stuck pero se pueden tomar varias acciones ante esta situación:

  1. Overload Protection: Se puede configurar a nivel de instancia cómo reaccionar ante situaciones de sobrecarga. Se define cuánto tiempo esperar antes de marcar un thread como stuck, cuántos threads en stuck se pueden permitir y qué acción tomar entre pasar la instancia a modo ADMIN o pararla directamente. En cualquiera de los casos, se ha de tener en cuenta que la acción afecta a la instancia (en el caso que una instancia desplegase varias aplicaciones, todas se verían afectadas).
    overload protection
  2. También se puede configurar que el Work Manager asociado se pare, volviendo a estar activo en el caso que dejase de superarse el umbral de threads stuck.
    workmanager_workload
  3. Módulos de diagnóstico: WebLogic proporciona por defecto la funcionalidad de módulos de diagnóstico, configurable a través de la consola de administración o WLST. Esto consiste, básicamente, en monitorizar la métrica de StuckThreadCount de runtime del servidor y definir un umbral. En caso de superación, se pueden tomar varias acciones: enviar un correo, crear un mensaje JMS, lanzar una imagen de diagnóstico, enviar una notificación JMX o enviar un trap SNMP.
    Las imágenes de diagnóstico consisten en un fichero .zip con varios ficheros .img (que se pueden abrir en texto plano) que aportan información completa del estado de la instancia (es una captura del estado de la instancia).
    También se puede utilizar el explorador WLDF para abrir estos ficheros .zip, que organiza la información en forma de árbol.
  4. Acciones correctivas desde Cloud Control: En el supuesto que se tengan importadas las instancias en cloud Control, se pueden definir umbrales de advertencia y críticos y asociar una acción correctiva a dichos umbrales. Estas acciones pueden ir desde reiniciar la instancia a lanzar un script propio.cc_corrective_action

¿Qué análisis podemos hacer?

Para poder analizar los threads stuck, es importante disponer de la siguiente información:

  • Thread dump: es importante lanzar varios thread dumps en un intervalo de tiempo, para poder analizar la evolución en el uso de threads.
  • Consumo de los threads stuck: a partir de un thread dump se puede obtener el identificador del thread y, con este identificador, el consumo de cpu y memoria de estos threads mediante, por ejemplo, un comando ‘ps’.
  • Heap dump: en determinadas circunstancias puede ser interesante lanzar un heap dump (recordad que esto deja congelada la instancia).

Con toda esta información se ha de analizar:

  1. ¿Están consumiendo muchos recursos? En caso afirmativo sería interesante analizar los recursos de la máquina.
  2. ¿Están ejecutando lo mismo, usando las mismas clases o llamando al mismo servicio backend? Una actualización en el código de la aplicación puede provocar la aparición de estos threads, ya sea por un mal desarrollo o por factores que no se han tenido en cuenta (esperas demasiado largas, no configuración de timeouts, etc.).
    También puede ser que si la aplicación llama a otro servicio, sea ese el que esté provocando la aparición de estos threads.

En cualquier caso, descubrir la causa de estos threads no suele ser sencillo y suele ser necesario colaborar con los equipos de desarrollo para analizar la información recolectada.

  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: