Configurar o tempo limite da solicitação para serviços

As configurações de tempo limite da solicitação do Cloud Run permitem definir o tempo máximo que um serviço tem para retornar uma resposta. Se o serviço não responder dentro desse limite, o Cloud Run vai fechar a conexão de rede e retornar um erro HTTP 504.

O fechamento da conexão não encerra a instância do contêiner. O contêiner pode continuar processando a solicitação interrompida, o que pode interferir no processamento de outras solicitações. Para evitar tempos limite, defina um tempo limite maior que o tempo de execução esperado ou acompanhe o tempo de execução restante para realizar a limpeza e retornar mais cedo.

Período de tempo limite para serviços

O tempo limite é definido por padrão como 5 minutos (300 segundos) e pode ser estendido para até 60 minutos (3.600 segundos).

Ao acionar o serviço de eventos do Eventarc, assinaturas por push do Pub/Sub ou Cloud Scheduler, o tempo limite desses serviços será aplicado.

É possível alterar essa configuração ao implantar uma imagem do contêiner ou atualizando as configurações de serviço.

Além de alterar o tempo limite da solicitação do Cloud Run, verifique o framework da linguagem para ver se ele tem a própria configuração de tempo limite de solicitação que você também precisa atualizar. Alguns clientes do serviço do Cloud Run também podem impor um tempo limite mais restritivo.

Funções exigidas

Para receber as permissões necessárias para configurar e implantar os serviços do Cloud Run, peça ao administrador para conceder a você os seguintes papéis do IAM:

Se você estiver implantando um serviço ou função do código-fonte, você também precisará ter outros papéis concedidos no projeto e na conta de serviço do Cloud Build.

Para uma lista de papéis e permissões do IAM associados ao Cloud Run, consulte Papéis do IAM do Cloud Run e Permissões do IAM do Cloud Run. Se o serviço do Cloud Run interage com Cloud de Confiance APIs, como as bibliotecas de cliente do Cloud, consulte o guia de configuração de identidade de serviço. Para mais informações sobre como conceder papéis, consulte permissões de implantação e gerenciar acesso.

Definir e atualizar o tempo limite da solicitação

Qualquer mudança na configuração leva à criação de uma nova revisão. As próximas revisões também recebem automaticamente essa configuração, a menos que você faça atualizações explícitas para alterá-la.

É possível definir o tempo limite da solicitação usando o Cloud de Confiance console, a linha de comando da CLI gcloud ou um arquivo YAML ao criar um novo serviço ou implantar uma nova revisão.

Console

  1. No Cloud de Confiance by S3NS console, acesse o Cloud Run:

    Acesse o Cloud Run

  2. Selecione Serviços no menu de navegação do Cloud Run e clique em Implantar contêiner para configurar um novo serviço. Se você estiver configurando um serviço atual, clique nele.

  3. Ao configurar um novo serviço, preencha a página inicial de configurações de serviço e clique em Contêineres, Rede, segurança para expandir essa página.

  4. Se você estiver configurando um serviço atual, clique na guia Escalonamento.

  5. Em Solicitações, no campo Tempo limite da solicção, insira o valor do tempo limite que você quer usar em segundos. Use valores que variam de 1 a 3600 segundos.

  6. Clique em Criar para um novo serviço. Clique em Ver diff e reimplantar e em Implantar mudanças para um serviço atual.

gcloud

É possível atualizar o tempo limite da solicitação para uma determinada revisão a qualquer momento, usando o comando a seguir:

gcloud run services update SERVICE --timeout=TIMEOUT

Substitua:

  • SERVICE: o nome do serviço.
  • TIMEOUT: o tempo em que uma resposta precisa ser retornada, usando um valor inteiro ou um valor de duração absoluta. Por exemplo, 1m20s, que é de 1 minuto e 20 segundos. Se você usar um valor inteiro, a unidade será considerada como segundos. O valor especificado precisa ser menor que 15 minutos.

Também é possível definir o tempo limite da solicitação durante a implantação usando o comando a seguir:

gcloud run deploy --image IMAGE_URL --timeout=TIMEOUT

Substitua:

  • IMAGE_URL: uma referência à imagem de contêiner, por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL segue o formato de LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
  • TIMEOUT: o tempo em que uma resposta precisa ser retornada, usando um valor inteiro ou um valor de duração. Por exemplo, 1m20s que é de 1 minuto e 20 segundos. Se você usar um valor inteiro, a unidade será considerada como segundos. O valor especificado precisa ser menor que 15 minutos.

YAML

  1. Se você estiver criando um novo serviço, pule esta etapa. Se você estiver atualizando um serviço existente, faça o download da configuração YAML correspondente:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Atualize o atributo timeoutSeconds:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          containers:
          - image: IMAGE
          timeoutSeconds: VALUE

    Substitua:

    • SERVICE: o nome do serviço do Cloud Run.
    • IMAGE_URL: uma referência à imagem de contêiner, por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL segue o formato de LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
    • VALUE: o tempo limite escolhido, em segundos.
  3. Crie ou atualize o serviço usando o seguinte comando:

    gcloud run services replace service.yaml

    O comando gcloud run services replace usa o arquivo service.yaml por padrão, se presente.

Terraform

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

Adicione o seguinte a um google_cloud_run_v2_service recurso na configuração do Terraform:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-request-timeout"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
    # Timeout
    timeout = "300s"
  }
}

Substitua 300s pelo tempo limite de solicitação escolhido do serviço.

Ver configurações de tempo limite da solicitação

Para ver as configurações atuais de tempo limite da solicitação do serviço do Cloud Run, faça o seguinte:

Console

  1. No Cloud de Confiance by S3NS console, acesse a página Serviços do Cloud Run:

    Acesse o Cloud Run

  2. Clique no serviço de seu interesse para abrir a página Detalhes do serviço.

  3. Clique na guia Escalonamento para conferir as configurações.

gcloud

  1. Use o comando a seguir:

    gcloud run services describe SERVICE
  2. Localize a configuração de tempo limite da solicitação na configuração retornada.