Solução de problemas

Nesta página, fornecemos estratégias de solução de problemas, bem como soluções para alguns problemas comuns.

Se você vir a mensagem de erro "O container apresentou falha ao iniciar; detecte na porta definida pela variável de ambiente PORT." ao implantar uma nova revisão, use estas etapas para resolver o problema.

Seu contêiner é executado localmente?

Ao solucionar problemas do Cloud Run, a primeira etapa será sempre confirmar se é possível executar a imagem do contêiner localmente. Se sua imagem do contêiner não estiver sendo executada localmente, a causa do problema não será proveniente do Cloud Run. É necessário diagnosticar e corrigir o problema localmente primeiro.

Seu contêiner está detectando solicitações na porta esperada?

Um problema comum é esquecer-se de detectar as solicitações recebidas ou detectar as solicitações recebidas na porta errada.

Conforme documentado no contrato de ambiente de execução do contêiner, seu contêiner precisa detectar solicitações de entrada na porta definida pelo Cloud Run e fornecidas na variável de ambiente PORT.

Se seu contêiner apresentar falha ao detectar na porta esperada, a verificação de integridade da revisão falhará, a revisão estará em um estado de erro e o tráfego não será roteado para ela.

Seu contêiner está detectando em todas as interfaces de rede?

Um motivo comum para os serviços do Cloud Run não serem iniciados é que o processo do servidor dentro do contêiner está configurado para detectar no endereço localhost (127.0.0.1). Isso se refere à interface de rede de loopback, que não pode ser acessada de fora do contêiner e, portanto, a verificação de integridade do Cloud Run não pode ser executada, causando a falha na implantação do serviço.

Para resolver esse problema, configure seu aplicativo para iniciar o servidor HTTP para detectar em todas as interfaces de rede, normalmente indicadas como 0.0.0.0.

Você vê erros nos registros?

Use o Cloud Logging para procurar erros de aplicativo nos registros stdout ou stderr, conforme descrito na página de geração de registros do Cloud Run. Também é possível procurar falhas capturadas no Error Reporting, conforme descrito na página de relatórios de erros do Cloud Run. Consulte também o tutorial de solução de problemas.

Você provavelmente precisa atualizar seu código ou suas configurações de revisão para corrigir os erros ou as falhas.

Suas instâncias de contêiner estão excedendo a memória?

Suas instâncias de contêiner podem estar excedendo a memória disponível. Para determinar se esse é o caso, procure esses erros nos registros varlog/system. Se as instâncias estiverem excedendo a memória disponível, considere aumentar o limite de memória.

Observe que as instâncias de contêiner do Cloud Run são executadas em um ambiente em que os arquivos gravados no sistema de arquivos local contam para a memória disponível. Isso também inclui todos os arquivos de registro que não são gravados em /var/log/* ou /dev/log.

403 Error: Forbidden ao abrir ou chamar o URL de serviço

Se você receber uma mensagem de erro 403"Erro: proibido" ao acessar seu serviço do Cloud Run, isso significa que seu cliente não está autorizado a chamar esse serviço. É possível resolver isso realizando uma das ações a seguir:

Erro SIGNATURE_REMOVED_BY_GOOGLE ao usar o token de ID

Isso pode ser observado durante o desenvolvimento e o teste nas circunstâncias a seguir:

  1. O usuário faz login com as contas de usuário por meio da linha de comando gcloud ou do Cloud Shell.
  2. O usuário gera um token de ID por meio da linha de comando gcloud.
  3. O usuário tenta usar o token de ID para invocar um serviço de execução na nuvem não público.

Isso ocorre por padrão. A assinatura do token é removida por questões de segurança, para impedir que qualquer serviço não público do Cloud Run reproduza tokens de ID gerados da maneira descrita acima. Em vez disso, para invocar um serviço particular com um novo token de ID, consulte Como testar a autenticação no serviço.

Você vê o código de erro 203 em solicitações de longa duração?

Se seu serviço estiver processando solicitações longas e você tiver aumentado o tempo limite da solicitação, ainda poderá ver as solicitações serem finalizadas antes da hora, com o código de erro 203. Isso pode ser causado pela configuração de tempo limite de solicitação do framework da linguagem que você também precisa atualizar. Por exemplo, os desenvolvedores do Node.js precisam atualizar a propriedade server.timeout (em inglês).

Você vê erros 503 sob carga alta?

O balanceador de carga do Cloud Run se esforça para distribuir solicitações recebidas pela quantidade necessária de instâncias do contêiner. No entanto, se as instâncias do contêiner estiverem usando muita CPU para processar solicitações, as instâncias do contêiner não poderão processar todas elas, e algumas serão retornadas com um código de erro 503.

Para atenuar isso, tente diminuir a simultaneidade. Comece com concurrency = 1 e aumente gradualmente para encontrar um valor aceitável. Consulte Como configurar a simultaneidade para mais detalhes.

Você vê erros 429?

Se o serviço atingir o número máximo de instâncias de contêiner, as solicitações serão retornadas com um código de erro 429. Tente aumentar esse limite aumentando as configurações da instância máxima ou (se precisar de mais de 1000 instâncias) solicitando um aumento de cota.

Suas solicitações são canceladas porque nenhuma instância está disponível?

O erro a seguir poderá ser exibido se a infraestrutura do Cloud Run não tiver escalonado rápido o suficiente para acompanhar o pico do tráfego:

The request was aborted because there was no available instance

Esse problema pode ser causado por um dos motivos a seguir:

Não é possível implantar ou chamar outras APIs do Google Cloud?

Confirme se o agente de serviço do Cloud Run não foi excluído e se ele tem o papel do IAM "Agente de serviço do Cloud Run". O e-mail termina com @serverless-robot-prod.iam.gserviceaccount.com.

Erro: o recurso está indisponível na etapa do lançamento declarado

Se você chamar a API Cloud Run Admin diretamente e usar um recurso Beta sem especificar uma anotação da etapa do lançamento, poderá receber o seguinte erro:

The feature is not supported in the declared launch stage

Os usuários da API Cloud Run Admin precisam anotar o recurso com uma anotação run.googleapis.com/launch-stage como BETA na solicitação, se algum recurso Beta for usado.

O exemplo a seguir adiciona uma anotação da etapa do lançamento a uma solicitação de serviço:

kind: Service
metadata:
  annotations:
    run.googleapis.com/launch-stage: BETA

Seu problema é causado por uma limitação no sandbox do contêiner?

Se seu contêiner for executado localmente, mas falhar no Cloud Run, o sandbox do contêiner do Cloud Run poderá ser responsável pela falha dele.

Na seção "Cloud Logging" do Console do GCP (não na guia "Registros" da seção "Cloud Run"), procure "Sandbox de contêiner" com uma gravidade "DEBUG" nos registros varlog/system ou use a consulta de registro:

resource.type="cloud_run_revision"
logName="projects/PROJECT_ID/logs/run.googleapis.com%2Fvarlog%2Fsystem"

varlogs

Exemplo:

Container Sandbox: Unsupported syscall setsockopt(0x3,0x1,0x6,0xc0000753d0,0x4,0x0)

Se você suspeitar que eles possam ser responsáveis pela falha do contêiner, entre em contato com o suporte e adicione a mensagem de registro ao tíquete de suporte. O suporte do Google Cloud pode pedir que você rastreie chamadas do sistema feitas por seu serviço para diagnosticar chamadas de sistema de nível inferior que não foram exibidas nos registros do Cloud Logging.