¿Puede una carga elevada provocar que el servidor se bloquee y el error se "bloquee durante más de 120 segundos"?


17

Actualmente ejecuta algunos servidores VM y 'baremetal'. Java se está ejecutando en alto: más del 400% a veces. Aleatoriamente el servidor se cuelga con el error en la consola "java - bloqueado por más de 120 segundos" - kjournald, etc.

No puedo obtener una salida dmesg porque, por alguna razón, este error solo se escribe en la consola, a la que no tengo acceso ya que está alojado de forma remota. Por lo tanto, no puedo copiar un rastro completo.

Cambié el entorno en el que está, incluso el servidor físico y todavía está sucediendo.

Cambié hung_task_timeout_secs a 0 en caso de que sea un falso positivo según http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Technical_Notes/deployment.html .

Además, irqbalance no está instalado, ¿tal vez ayudaría?

Esto es Ubuntu 10.04 64 bits, el mismo problema con el último servidor 2.6.38-15 y 2.6.36.

¿podrían problemas de la CPU o de la memoria / no queda intercambio causar este problema?

Aquí está el mensaje de la consola:

[58Z?Z1.5?Z840] INFUI task java:21547 blocked for more than 120 seconds.
[58Z?Z1.5?Z986] "echo 0 > /proc/sgs/kernel/hung_task_timeout_secs" disables this
message.
[58Z841.5?Z06Z] INFUI task kjournald:190 blocked for more than 120 seconds.
[58Z841.5?Z336] "echo 0 > /proc/sgs/kernel/hung_task_timeout_secs" disables this
message.
[58Z841.5?Z600] INFUI task flush-202:0:709 blocked for more than 120 seconds.
[58Z841.5?Z90?] "echo 0 > /proc/sgs/kernel/hung_task_timeout_secs" disables this
message.
[58Z841.5?3413] INFUI task java:21547 blocked for more than 120 seconds.
[58Z841.5?368Z] "echo 0 > /proc/sgs/kernel/hung_task_timeout_secs" disables this
message.
[58Z961.5?ZZ36] INFUI task kjournald:60 blocked for more than 120 seconds.
[58Z961.5?Z6Z5] "echo 0 > /proc/sgs/kernel/hung_task_timeout_secs" disables this
message.
[58Z961.5?31ZZ] INFUI task flush-202:0:709 blocked for more than 120 seconds.
[58Z961.5?3393] "echo 0 > /proc/sgs/kernel/hung_task_timeout_secs" disables this
message.

Respuestas:


15

Si, podria.

Lo que esto significa es bastante explícito: el núcleo no pudo programar la tarea durante 120 segundos. Esto indica la falta de recursos, a menudo en torno al acceso al disco.

irqbalancepodría ayudar, pero eso no parece obvio. ¿Puede proporcionarnos el entorno de este mensaje dmesg, en particular el seguimiento de la pila que lo sigue?

Además, esto no es un falso positivo. Esto no dice que la tarea se cuelgue para siempre , y la afirmación es perfectamente correcta. Eso no significa que sea un problema para usted, y puede decidir ignorarlo si no nota ningún impacto en el usuario.

Esto no puede ser causado por:

  • un problema de CPU (o más bien, eso sería una falla de hardware increíblemente improbable),
  • un problema de memoria (muy improbable una falla de hardware, pero no sucedería varias veces; no sería una falta de RAM como sería un proceso oom-killed),
  • falta de intercambio ( oom-killernuevamente).

Hasta cierto punto, es posible que pueda atribuir esto a la falta de memoria en el sentido de que privar a su sistema del almacenamiento en caché de datos en la RAM causará más E / S. Pero no es tan sencillo como "quedarse sin memoria".


No hay nada grabado en / var / log / dmesg, así que acabo de pegar lo que mostró la consola ... cuando aparece, el sistema está 100% bloqueado.
Tee

Este mensaje proviene del kernel, aparecerá en dmesg(si fue registrado recientemente) ya que este comando imprime el buffer del anillo de registro del kernel. Esperemos que su syslogconfiguración también lo registre en algún lugar /var/log, pero no podría saber dónde.
Pierre Carrier

El mensaje NO aparecerá /var/log/dmesg, pero puede aparecer cuando ejecutas el dmesgcomando. El archivo se crea durante el proceso de arranque y, en general, solo captura los mensajes del kernel en el momento del arranque (que de lo contrario eventualmente se desplazarían fuera del búfer del anillo del kernel. También podría instalar / habilitar sysstaty ver la utilización de los recursos como se informó allí. Sospecho que el disco I / O / iowait, probablemente relacionado con el intercambio (sysstat ayudará a identificar esto)
Dr. Edward Morbius el

@ Dr.EdwardMorbius Entonces, ¿cómo solucionamos esto? Tengo un problema importante relacionado con esto con nuestro servidor Zimbra que funcionaba muy bien en un entorno de producción hasta hace poco.
Lopsided

@Lopsided: Perdón por el retraso, no estoy aquí a menudo. Brevemente: tendrá que perfilar su proceso Java y descubrir por qué está colgando. La recolección de basura es un área en la que he tenido problemas (y éxitos) en el ajuste. Busque los ergodímicos de recolección de basura de JVM y vea oracle.com/technetwork/java/javase/gc-tuning-6-140523.html Encontré que el aumento del montón ayudó notablemente.
Dr. Edward Morbius

6
sudo sysctl -w vm.dirty_ratio=10
sudo sysctl -w vm.dirty_background_ratio=5

Luego comete el cambio con:

sudo sysctl -p

lo resolvió para mí ...


66
Debe explicar qué hacen cada una de esas configuraciones.
kasperd

66
Esto solucionó un problema similar que estaba teniendo en un entorno docker. Encontré una explicación aquí: blackmoreops.com/2014/09/22/… . "De manera predeterminada, Linux usa hasta el 40% de la memoria disponible para el almacenamiento en caché del sistema de archivos. Después de alcanzar esta marca, el sistema de archivos descarga todos los datos pendientes al disco, lo que hace que todas las E / S siguientes se sincronicen. un límite de tiempo de 120 segundos por defecto. En el caso aquí, el subsistema IO no es lo suficientemente rápido como para vaciar los datos dentro ... "
Peter M

2

Recientemente pasé por este error en uno de nuestros clústeres de producción:

11 de noviembre 14:56:41 kernel xxx: INFORMACIÓN: tarea xfsalloc / 3: 2393 bloqueado durante más de 120 segundos.

11 de noviembre 14:56:41 Kernel Xxxx: No contaminado 2.6.32-504.8.1.el6.x86_64 # 1

11 de noviembre 14:56:41 xxx: "echo 0> / proc / sys / kernel / hung_task_timeout_secs" deshabilita este mensaje.

..

En la verificación adicional de los registros de sar Se encontró que la espera de E / S se incrementó durante el mismo tiempo.

Y al comprobar que el hardware (discos físicos) vio errores medios y otros errores SCSI habían iniciado sesión en uno, los discos físicos, que a su vez estaban bloqueando las E / S, debido a la falta de recursos para asignar.

11/11/15 19:52:40: indicadores pRdm 607b8000 terminados = 0 TimeOutC = 0 RetryC = 0 Request c1173100 Reply 60e06040 iocStatus 0048 retryC 0 devId: 3 devFlags = f1482005 iocLogInfo: 31140000

11/11/15 19:52:40: DM_ProcessDevWaitQueue: Gestión de tareas en el proceso devId = x 11/11/15 19:52:40: DM_ProcessDevWaitQueue: Gestión de tareas en el proceso devId = x

Esto se debió a un error de hardware en nuestro clúster.

Por lo tanto, sería bueno, si pudiera verificar el archivo principal y también si la utilidad ipmi está allí, verifique el comando ipmiutil / ipmitool sel elist para verificar el problema.

Saludos, VT


0

Puede ir a la interfaz de monitoreo de su proveedor de la nube y verificar si no excedió las IOps máximas especificadas para su almacenamiento, eso explicaría por qué tardó tanto tiempo en vaciar los datos de la memoria caché.
El IOps máximo está disponible en su página de atributos de almacenamiento.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.