En este documento, se describe cómo solucionar problemas de bloqueos suaves de vCPU. Una interrupción suave se produce cuando la CPU virtual de una instancia de máquina virtual (VM) no puede ejecutar una tarea nueva durante más de 20 segundos. La mayoría de las interrupciones suaves se deben a errores en el software de la aplicación.
Los bloqueos suaves pueden hacer que las VMs dejen de responder durante períodos breves, interrupciones del acceso SSH a las VMs y activación de tiempos de espera o conmutación por error de la aplicación. Es posible que las VMs que experimentan una interbloqueo suave también tengan un uso de CPU inusualmente alto o bajo, según la causa exacta del interbloqueo suave.
Identifica bloqueos parciales
Para identificar si tu VM experimenta una interbloqueo suave, haz lo siguiente:
- Si habilitaste anteriormente el registro de salida del puerto en serie para tu VM, revisa la salida del puerto en serie para encontrar un seguimiento de pila de bloqueo suave.
- Revisa los registros del sistema operativo de la VM (
/var/log/messages
) en busca de un seguimiento de pila de bloqueo suave.
Ejemplo de seguimiento de pila de bloqueo suave
watchdog: BUG: soft lockup - CPU#3 stuck for 22s!
Para detectar futuros bloqueos suaves, puedes hacer lo siguiente:
Crea una política de alertas basada en registros para el siguiente registro:
resource.type="gce_instance" log_id("serialconsole.googleapis.com/serial_port_1_output") textPayload=~"watchdog.*lockup"
Soluciona problemas de bloqueos parciales
Después de identificar que se produce un bloqueo suave, prueba los siguientes pasos para solucionar el problema:
- Consulta el sitio del proveedor de tu SO para ver si hay errores conocidos con tu versión. A veces, puedes encontrar referencias a módulos de kernel específicos en el seguimiento de pila que sugieren una función o operación en particular que está involucrada.
- Identifica si el bloqueo suave se repite con alguna frecuencia, por ejemplo, si coincide con una carga alta o con ciertas actividades. Si las interrupciones suaves se correlacionan con una carga alta, es posible que debas volver a configurar tu carga de trabajo, por ejemplo, usando una VM más grande o dividiendo la carga en más VMs.
- Verifica si las interrupciones suaves se correlacionan con algún cambio en el entorno de ejecución, como nuevas implementaciones de software o actualizaciones de imagen de SO.
- Evalúa si se produjeron eventos de mantenimiento cerca de la hora del bloqueo suave. Para ello, revisa los registros de auditoría en busca de registros de auditoría de eventos del sistema.
Si los pasos anteriores para solucionar problemas no resolvieron el problema, envía un caso de asistencia y, luego, incluye toda la información que recopilaste durante el proceso.
Prácticas recomendadas para evitar bloqueos suaves
Para evitar que tus VMs experimenten bloqueos suaves, te recomendamos que implementes las siguientes prácticas recomendadas:
- Asegúrate de tener configurados los componentes redundantes adecuados para tu sistema, como clústeres de alta disponibilidad, para proporcionar una capacidad de conmutación por error si una VM en particular experimenta una interbloqueo suave prolongado. Para obtener más información, consulta Diseña sistemas resilientes.
- Para cargas de trabajo que hacen un uso intensivo del procesamiento, considera usar familias de máquinas optimizadas para procesamiento.
- Prueba tu carga de trabajo con eventos de mantenimiento simulados para saber cómo se comporta durante la migración en vivo (si está habilitada), en especial durante las pruebas de carga.
- Si ejecutas un kernel de Linux o módulos personalizados en tu VM, prueba los cambios nuevos durante la carga antes de implementarlos en tu entorno de producción. Confirma que tus cambios personalizados no te descalifiquen para recibir asistencia del proveedor del SO.
- Mantén tu sistema operativo actualizado. Para obtener más información, consulta Detalles de los sistemas operativos.