En este documento, se describe cómo solucionar problemas relacionados con los límites de operaciones simultáneas en Compute Engine que se producen por errores de rateLimitExceeded
.
Para ayudar a identificar la causa de un error rateLimitExceeded
, sigue estos pasos para solucionar problemas:
-
En la consola de Google Cloud, ve a la página Explorador de registros.
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Logging.
Para filtrar los registros de errores que genera la API de Compute Engine, ingresa la siguiente consulta de registro en el editor de consultas.
log_id("cloudaudit.googleapis.com/activity") protoPayload.serviceName="compute.googleapis.com" protoPayload.response.error.code=403 protoPayload.status.message="Rate Limit Exceeded"
Los registros de errores filtrados deberían ser similares a los siguientes:
"protoPayload":{ "@type": "type.googleapis.com/google.cloud.audit.AuditLog", "status": { "message": "Rate Limit Exceeded" } "serviceName": "compute.googleapis.com", "methodName": "METHOD_NAME", ... ... "response": { "error": { "message": "Rate Limit Exceeded", "code": 403, "errors": [ { "message": "Rate Limit Exceeded", "reason": "rateLimitExceeded", "domain": "usageLimits" } ] }, "@type": "type.googleapis.com/error" }, "resourceLocation": { "currentLocations": [ "LOCATION" ] }, ... ...
Los detalles del error contienen los siguientes valores:
METHOD_NAME
: Es el nombre de la operación o el método del servicio. En el caso de las llamadas a la API, este nombre debe ser el nombre del método de la API.LOCATION
: Es la ubicación del recurso. Puede ser una región, una zona o global. Por ejemplo, las entradascurrentLocations: "us-central1"
(regional) ocurrentLocations: "us-central1-a"
indican que la región es"us-central1"
ocurrentLocations: "global"
.
Identifica el valor
methodName
asociado en el registro de errores. Este nombre representa el método de la API para el que se superó el límite de frecuencia, por ejemplo:v1.compute.instances.stop
.Identifica la ubicación relevante en los registros de auditoría.
Consulta las cuotas y los límites de
Concurrent operations per project
.Console
En la consola de Google Cloud, ve a la página Cuotas.
En la página Cuotas, se muestra una lista de los usos y límites de la cuota de tu proyecto. De forma predeterminada, la lista se ordena para mostrar primero las cuotas más usadas, lo que te ayuda a ver los límites que están en riesgo de excederse.
Para filtrar la lista y ver el uso y el límite de una cuota específica, selecciona Cuota o Métrica en el campo Filtro.
Por ejemplo, selecciona la cuota por el nombre
Concurrent global operations per project operation type
o seleccionaService: Compute Engine API
,type: System Limit
y una palabra claveconcurrent
para enumerar todas las cuotas de operaciones simultáneas. El filtrado proporciona una lista de cuotas simultáneas. En esta lista, puedes buscar la cuota afectada. Para filtrar la cuota de una operación específica, agrega Dimensiones a la consulta de filtro y selecciona el tipo de operación (que se muestra como methodName en los registros de auditoría).Por ejemplo, selecciona
instances_stop
para ver el uso y el límite de la cuota de la operacióninstances.stop
.Para filtrar la cuota de una región específica, agrega Dimensiones a la consulta de filtro y selecciona la región (que se muestra como currentLocations en los registros de auditoría).
Por ejemplo, selecciona
us-central1
para ver el uso y el límite de la cuota de la regiónus-central1
.Los filtros region y operation_type se pueden usar juntos para ver el uso y el límite de la cuota de una operación específica en una región específica.
gcloud
Puedes usar Google Cloud CLI para ver el uso y el límite de las cuotas de operaciones simultáneas.
Para usar este enfoque, asegúrate de haber instalado el componente de los comandos alfa. Si usas Cloud Shell para interactuar con Google Cloud, se instala Google Cloud CLI de manera automática.
Para ver una cuota de operación, usa el siguiente comando:
gcloud alpha services quota list \ --service=compute.googleapis.com \ --consumer=projects/PROJECT_ID
Reemplaza
PROJECT_ID
por el ID del proyecto para el que deseas ver la cuota.Por lo general, estas cuotas se agrupan en dos categorías:
- Global o regional
- Por proyecto o por proyecto y por tipo de operación
Para obtener más información, consulta Grupos de cuotas de operaciones simultáneas.
Consulta el gráfico de uso de la cuota. Si el uso está cerca o supera el límite de cuota durante el período de los registros de errores, significa que se superó la cuota o el límite del sistema.
Para ver gráficos que muestran el uso actual y máximo, ve a la cuota y, luego, haz clic en
Supervisión. Es posible que debas desplazarte hacia la derecha hasta el final de la tabla.El gráfico de supervisión confirmará la causa del error
rateLimitExceeded
, con la cuota o el límite específicos. Si los valores actuales superan los valores límite, significa que se superó el límite del sistema. Dado que los límites del sistema no se pueden modificar, te recomendamos que sigas las siguientes prácticas recomendadas para reducir la cantidad de operaciones simultáneas.Estas son algunas de las prácticas recomendadas:
- Espera a que se completen las operaciones
- Confía en los códigos de error, no en los mensajes de error
Minimiza los reintentos del cliente para preservar los límites de frecuencia de la API
Puedes usar cualquiera de los siguientes métodos para minimizar los reintentos: