En este documento se describe cómo solucionar problemas de bloqueo suave de vCPU. Un bloqueo parcial se produce cuando la vCPU de una instancia de máquina virtual no puede ejecutar una tarea nueva durante más de 20 segundos. La mayoría de los bloqueos suaves se deben a errores en el software de la aplicación.
Los bloqueos suaves pueden provocar que las VMs dejen de responder durante breves periodos de tiempo, interrumpir el acceso SSH a las VMs y activar tiempos de espera o conmutaciones por error de las aplicaciones. Las VMs que experimentan un bloqueo suave también pueden tener un uso de CPU inusualmente alto o inusualmente bajo, en función de la causa exacta del bloqueo suave.
Identificar bloqueos parciales
Para identificar si tu máquina virtual está experimentando un bloqueo parcial, haz una de las siguientes acciones:
- Si has habilitado el registro de salida del puerto serie de tu VM, consulta la salida del puerto serie para ver el seguimiento de pila de un bloqueo parcial.
- Revisa los registros del sistema operativo de tu VM (
/var/log/messages
) para ver si hay un seguimiento de pila de bloqueo suave.
Ejemplo de rastreo de pila de bloqueo parcial
watchdog: BUG: soft lockup - CPU#3 stuck for 22s!
Para detectar bloqueos leves futuros, 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"
Solucionar problemas de bloqueo parcial
Una vez que hayas identificado que se está produciendo un bloqueo parcial, prueba estos pasos para solucionar el problema:
- Consulta el sitio del proveedor de tu SO para ver si hay errores conocidos en tu versión del SO. A veces, puede que encuentres referencias a módulos de kernel específicos en el seguimiento de pila que sugieran una función u operación concretas implicadas.
- Identifica si el bloqueo parcial se repite con alguna frecuencia, como coincidir con una carga alta o determinadas actividades. Si los bloqueos suaves se correlacionan con una carga alta, es posible que tengas que volver a configurar tu carga de trabajo. Por ejemplo, puedes usar una máquina virtual más grande o dividir la carga en más máquinas virtuales.
- Comprueba si los bloqueos de software se corresponden con algún cambio en tu entorno de tiempo de ejecución, como nuevas implementaciones de software o actualizaciones de imágenes del SO.
- Evalúa si se han producido eventos de mantenimiento en torno al momento del bloqueo parcial. Para ello, consulta los registros de auditoría de los eventos del sistema.
Si no has podido resolver el problema con los pasos anteriores, registra un caso de asistencia e incluye toda la información que hayas recogido para solucionar el problema.
Prácticas recomendadas para evitar bloqueos leves
Para evitar que tus VMs sufran bloqueos leves, te recomendamos que implementes las siguientes prácticas recomendadas:
- Asegúrate de que tu sistema tenga configurados los componentes redundantes adecuados, como clústeres de alta disponibilidad, para proporcionar una función de conmutación por error si una máquina virtual concreta experimenta un bloqueo suave prolongado. Para obtener más información, consulta Diseñar sistemas resilientes.
- Para las cargas de trabajo que requieran muchos recursos de computación, te recomendamos que uses las familias de máquinas optimizadas para la computación.
- Prueba tu carga de trabajo con eventos de mantenimiento simulados para saber cómo se comporta durante la migración activa (si está habilitada), sobre todo en pruebas de carga.
- Si ejecutas un kernel de Linux personalizado o módulos personalizados en tu VM, prueba los nuevos cambios con carga antes de implementarlos en tu entorno de producción. Confirma que los cambios personalizados no te impiden recibir asistencia del proveedor de tu sistema operativo.
- Mantén actualizado tu sistema operativo. Para obtener más información, consulta los detalles del sistema operativo.