Limitações de taxa de API

Os limites de taxa de API definem o número de solicitações que podem ser feitas para a API Compute Engine. As limitações de taxa de API são aplicadas por projeto. Ao usar gcloud compute ou o Console do Google Cloud, você também está fazendo solicitações à API. Essas solicitações são contabilizadas na limitação de taxa de API. Se você usar as contas de serviço para acessar a API, isso também será contabilizado na limitação de taxa.

Atualmente, os projetos são limitados às categorias de limitação de taxa da API a seguir. Cada categoria de limite é contada separadamente. Dessa maneira, você atinge o limite máximo em cada categoria simultaneamente. Os limites de taxa são aplicados em intervalos de 100 segundos. Por exemplo, 20 solicitações/segundo seriam convertidas em 2.000 solicitações em 100 segundos. Isso significa que, se você atingir um limite específico a qualquer momento dentro de 100 segundos, precisará aguardar até que seu bucket de cota seja atualizado para fazer mais solicitações.

  • Consultas: limites para todos os métodos, exceto *.get e *.list:
    • Taxa por projeto: 20 solicitações/segundo
    • Taxa por usuário: 20 solicitações/segundo
  • Solicitações de leitura: limites para os métodos *.get:
    • Taxa por projeto: 20 solicitações/segundo
    • Taxa por usuário: 20 solicitações/segundo
  • Solicitações de listagem: limites para os métodos *.list:
    • Taxa por projeto: 20 solicitações/segundo
    • Taxa por usuário: 20 solicitações/segundo
  • Solicitações de leitura de operações: limites para os métodos *OperationsService.Get:
    • Taxa por projeto: 20 solicitações/segundo
    • Taxa por usuário: 20 solicitações/segundo
  • Solicitações de leitura pesadas: limites para os métodos *.AggregatedList:
    • Taxa por projeto: 10 solicitações/segundo
    • Taxa por usuário: 10 solicitações/segundo
  • Solicitações de mutação pesadas: limites para os métodos patch, delete e insert dos recursos InterconnectsService e InterconnectAttachmentsService:
    • Taxa por projeto: 10 solicitações/segundo
    • Taxa por usuário: 10 solicitações/segundo
  • Solicitações SimulateMaintenanceEvent de instâncias: limites para os métodos *.SimulateMaintenanceEvent:
    • Taxa por projeto: 2 solicitações/segundo
    • Taxa por usuário: 2 solicitações/segundo
  • Solicitações de inserção de licença: limites para os métodos *.LicensesService.Insert:
    • Taxa por projeto: 2 solicitações/segundo
    • Taxa por usuário: 2 solicitações/segundo
  • Solicitações globais de mutação de recursos. Limites para os métodos disks.createSnapshot, snapshots.delete, snapshots.setLabels, images.insert, images.delete, images.deprecate, images.setLabels, machineImages.insert, machineImages.delete:
    • Taxa por projeto: 5 solicitações/segundo
    • Taxa por usuário: 5 solicitações/segundo

Se você precisar de uma limitação de taxa mais alta para as solicitações de API, solicite um aumento no Console do Google Cloud.

Práticas recomendadas

Veja algumas práticas recomendadas para ajudar você a trabalhar com os limites de taxa de API no Compute Engine.

  • Use o bursting com moderação e seletivamente. Bursting é o ato de permitir que um cliente específico faça muitas solicitações de API em um curto período de tempo. Geralmente, isso é feito em resposta a cenários excepcionais, como casos em que seu aplicativo precisa lidar com mais tráfego do que o normal. O bursting queima rapidamente seu limite de taxa da API, portanto, certifique-se de usá-lo somente quando necessário.

  • Use uma limitação de taxa no lado do cliente. Uma limitação de taxa no lado do cliente define um limite artificial para que o cliente em questão possa usar apenas uma determinada quantidade de cota. Isso impede que um só cliente consuma toda sua cota.

  • Use a retirada exponencial para distribuir progressivamente as solicitações quando atingir sua cota. Isso dá ao servidor tempo para reabastecer seus buckets de cota.

  • Evite pesquisas curtas, em que seus clientes continuamente fazem solicitações ao servidor sem esperar por uma resposta. Se você fizer uma pesquisa curta, será mais difícil detectar solicitações incorretas que sejam contadas na sua cota, mesmo que elas não retornem dados úteis.

  • Divida seus aplicativos em vários projetos. Como as cotas são aplicadas em um nível por projeto, é possível dividir seus aplicativos para que cada aplicativo tenha um conjunto de cotas próprio dedicado.

  • Se você receber um erro 403 com a mensagem de erro rateLimitExceeded, aguarde alguns segundos e tente sua solicitação novamente. Os buckets de cota são recarregados a cada 100 segundos. Portanto, sua solicitação provavelmente será bem-sucedida depois que você ultrapassar esse período.