Resolução de problemas de bloqueios suaves de vCPU


Este documento descreve como resolver problemas de bloqueios temporários de vCPUs. Um bloqueio temporário ocorre quando a vCPU de uma instância de máquina virtual (VM) não consegue executar uma nova tarefa durante mais de 20 segundos. A maioria dos bloqueios temporários é causada por erros no software da aplicação.

Os bloqueios temporários podem fazer com que as VMs não respondam durante breves períodos, interromper o acesso SSH às VMs e acionar limites de tempo ou failover das aplicações. As VMs que estão a sofrer um bloqueio temporário também podem ter uma utilização da CPU invulgarmente elevada ou invulgarmente baixa, consoante a causa exata do bloqueio temporário.

Identifique bloqueios temporários

Para identificar se a sua VM está a sofrer um soft lockup, faça uma das seguintes ações:

Exemplo de rastreio de pilha de bloqueio suave

watchdog: BUG: soft lockup - CPU#3 stuck for 22s!

Para detetar bloqueios temporários futuros, pode fazer o seguinte:

  1. Ative o registo de saída da porta de série.

  2. Crie uma política de alertas baseada em registos para o seguinte registo:

    resource.type="gce_instance" log_id("serialconsole.googleapis.com/serial_port_1_output") textPayload=~"watchdog.*lockup"
    

Resolva bloqueios suaves

Depois de identificar que está a ocorrer um bloqueio temporário, experimente os seguintes passos de resolução de problemas para resolver o problema:

  1. Consulte o site do fornecedor do SO para ver erros conhecidos com a sua versão do SO. Por vezes, pode encontrar referências a módulos do kernel específicos no rastreio da pilha que sugerem uma função ou uma operação específica envolvida.
  2. Identifique se o bloqueio temporário se repete com alguma frequência, como coincidir com uma carga elevada ou determinadas atividades. Se os bloqueios temporários estiverem correlacionados com uma carga elevada, pode ter de reconfigurar a sua carga de trabalho, por exemplo, usando uma VM maior ou dividindo a carga por mais VMs.
  3. Verifique se os bloqueios temporários estão correlacionados com alterações ao seu ambiente de tempo de execução, como novas implementações de software ou atualizações de imagens do SO.
  4. Avalie se ocorreram eventos de manutenção na altura do bloqueio temporário, revendo os registos de auditoria para registos de auditoria de eventos do sistema.

Se os passos de resolução de problemas anteriores não resolveram o problema, apresente um registo de apoio técnico e inclua todas as informações que recolheu na resolução de problemas.

Práticas recomendadas para evitar bloqueios temporários

Para ajudar a evitar que as suas VMs sofram bloqueios temporários, recomendamos que implemente as seguintes práticas recomendadas:

  • Certifique-se de que tem componentes redundantes adequados configurados para o seu sistema, como clusters de alta disponibilidade, para fornecer uma capacidade de comutação em caso de falha se uma determinada VM sofrer um bloqueio temporário prolongado. Para mais informações, consulte o artigo Conceber sistemas resilientes.
  • Para cargas de trabalho com utilização intensiva de computação, considere usar famílias de máquinas otimizadas para computação.
  • Teste a sua carga de trabalho com eventos de manutenção simulados para saber como a carga de trabalho funciona durante a migração em direto (se ativada), especialmente durante os testes de carga.
  • Se estiver a executar um kernel do Linux personalizado ou módulos personalizados na sua VM, teste as novas alterações sob carga antes de as implementar no seu ambiente de produção. Confirme que as suas alterações personalizadas não o impedem de receber apoio técnico do fornecedor do SO.
  • Mantenha o sistema operativo atualizado. Para mais informações, consulte os detalhes do sistema operativo.