En este documento se describe cómo solucionar problemas con los límites de operaciones simultáneas en Compute Engine causados por errores rateLimitExceeded
.
Para identificar la causa de un error rateLimitExceeded
, sigue estos pasos:
-
En la Google Cloud consola, ve a la página Explorador de registros:
Ve al Explorador de registros.
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuya sección sea Registro.
Para filtrar los registros de errores generados por la API de Compute Engine, introduce 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 tener un aspecto similar al siguiente:
"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
: el nombre del método o la operación del servicio. En el caso de las llamadas a la API, el nombre debería ser el método de la API.LOCATION
: 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 cuyo límite de frecuencia se ha superado. Por ejemplo,v1.compute.instances.stop
.Identifica la ubicación pertinente en los registros de auditoría.
Consulta las
Concurrent operations per project
cuotas y los límites.Consola
En la Google Cloud consola, ve a la página Cuotas.
En la página Cuotas se muestran el uso y los límites de las cuotas de tu proyecto. De forma predeterminada, la lista se ordena de manera que muestra en primera posición las cuotas que más se han utilizado para que te sea más fácil ver qué límites están cerca de superarse.
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 Filtrar.
Por ejemplo, puede seleccionar la cuota por nombre
Concurrent global operations per project operation type
o seleccionarService: Compute Engine API
,type: System Limit
y una palabra claveconcurrent
para ver 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, añada Dimensions a la consulta de filtro y seleccione operation_type (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, añada Dimensions a la consulta de filtro y seleccione 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 cuota de una operación específica en una región concreta.
gcloud
Puedes usar la CLI de Google Cloud para ver el uso y el límite de las cuotas de operaciones simultáneas.
Para usar este método, asegúrate de haber instalado el componente comandos alfa. Si usas Cloud Shell para interactuar con Google Cloud, Google Cloud CLI ya está instalado.
Para ver una cuota de operaciones, usa el siguiente comando:
gcloud alpha services quota list \ --service=compute.googleapis.com \ --consumer=projects/PROJECT_ID
Sustituye
PROJECT_ID
por el ID del proyecto cuya cuota quieras ver.Estas cuotas se suelen agrupar en dos categorías:
- Global o regional
- Por proyecto o por proyecto y 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 por encima del límite de la cuota durante el periodo de los registros de errores, significa que se ha superado el límite de la cuota o del sistema.
Para ver gráficos que muestren el uso actual y máximo, ve a la cuota y haz clic en
Monitorización. Es posible que tengas que desplazarte hacia la derecha hasta el final de la tabla.El gráfico de monitorizació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 ha superado el límite del sistema. Como los límites del sistema no se pueden modificar, te recomendamos que sigas estas prácticas recomendadas para reducir el número de operaciones simultáneas.Estas son algunas de las prácticas recomendadas:
- Espera a que se completen las operaciones
- Basarse en los códigos de error, no en los mensajes de error
Minimizar los reintentos del lado del cliente para mantener los límites de frecuencia de la API
Puede usar cualquiera de los siguientes métodos para minimizar los reintentos: