Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describe cómo Azure Resource Manager limita las solicitudes. Muestra cómo realizar un seguimiento del número de solicitudes que permanecen antes de alcanzar el límite y cómo responder al alcanzar el límite.
Limitación regional y algoritmo de token bucket
Microsoft ha migrado las suscripciones de Azure a una arquitectura de limitación actualizada a partir de 2024. Ahora se aplican límites de control de velocidad por región en lugar de por instancia de Azure Resource Manager. Esta nueva arquitectura usa un algoritmo de token bucket para administrar la limitación de API.
El cubo de tokens representa el número máximo de solicitudes que puede enviar por cada segundo. Cuando se alcanza el número máximo de solicitudes, la tasa de recarga determina la rapidez con la que los tokens están disponibles en el cubo.
Estos límites actualizados facilitan la actualización y administración de la cuota.
Los límites actualizados son:
Ámbito | Operaciones | Tamaño del cubo | Tasa de recarga por segundo |
---|---|---|---|
Suscripción | lecturas | 250 | 25 |
Suscripción | eliminaciones | 200 | 10 |
Suscripción | escrituras | 200 | 10 |
Inquilino | lecturas | 250 | 25 |
Inquilino | eliminaciones | 200 | 10 |
Inquilino | escrituras | 200 | 10 |
Los límites de suscripción se aplican por suscripción, por entidad de servicio y por tipo de operación. También hay límites de suscripción globales equivalentes a 15 veces los límites de entidad de servicio individuales para cada tipo de operación. Los límites globales se aplican en todas las entidades de servicio. Las solicitudes se limitan si se superan los límites globales, de entidad de servicio o específicos del inquilino.
Los límites pueden más reducidos para los clientes gratuitos o de prueba.
Por ejemplo, supongamos que tiene un tamaño de cubo de 250 tokens para solicitudes de lectura y tasa de recarga de 25 tokens por segundo. Si envía 250 solicitudes de lectura en un segundo, el cubo está vacío y las solicitudes están limitadas. Cada segundo, 25 tokens estarán disponibles hasta que el cubo alcance su capacidad máxima de 250 tokens. Puede usar tokens a medida que estén disponibles.
La lectura de métricas mediante la API de */providers/microsoft.insights/metrics
contribuye significativamente al tráfico general de Azure Resource Manager y es una causa común de los eventos de limitación de suscripciones. Si usa esta API en gran medida, se recomienda cambiar a la API getBatch
. Puede consultar varios recursos en una sola solicitud REST, lo que mejora el rendimiento y reduce la limitación. Para obtener más información sobre cómo convertir las operaciones, consulte Cómo migrar desde la API de métricas a la API getBatch.
¿Cómo puedo ver mis solicitudes limitadas?
Para ver sus solicitudes controladas y otras métricas de Azure Resource Manager, consulte Acceso a las métricas de Azure Resource Manager.
¿Por la limitación es por región en lugar de por instancia?
Dado que diferentes regiones tienen un número diferente de instancias de Resource Manager, la limitación por instancia provoca un rendimiento de limitación incoherente. La limitación por región hace que la limitación sea coherente y predecible.
¿Cómo afecta la experiencia de limitación actualizada a mis límites?
Puede enviar más solicitudes. Las solicitudes de escritura aumentan en 30 veces. Las solicitudes de eliminación aumentan en 2,4 veces. Las solicitudes de lectura aumentan en 7,5 veces.
Limitación de trabajos en segundo plano
Los trabajos en segundo plano de Azure Resource Manager (ARM) son tareas automatizadas que se ejecutan en segundo plano para admitir operaciones como implementaciones de recursos, diagnósticos y mantenimiento del sistema. Estos trabajos son esenciales para procesar solicitudes de usuario y garantizar la funcionalidad del servicio. Para mantener la estabilidad y confiabilidad de la plataforma, ARM emplea la restricción de trabajos en segundo plano para administrar la carga de estas tareas.
Puede identificar cuándo se produce la limitación del trabajo en segundo plano si recibe el siguiente mensaje de error:
The request for subscription '{0}' could not be processed due to an excessive volume of traffic. Please try again later.
Los clientes pueden experimentar limitaciones debido a trabajos en segundo plano excesivos, que pueden desencadenarse mediante operaciones de alta frecuencia o actividades de todo el sistema. Aunque los clientes no tienen control directo sobre la creación o ejecución de estos trabajos, es importante conocer la posible limitación.
Limitación de nubes no públicas
La regulación se produce en dos niveles. Azure Resource Manager limita las solicitudes de la suscripción y el inquilino. Si la solicitud está bajo los límites de la suscripción y el inquilino, Resource Manager enruta la solicitud al proveedor de recursos. El proveedor de recursos aplica límites que se adaptan a sus operaciones.
Las solicitudes se limitan inicialmente por identificador de entidad de seguridad y por instancia de Azure Resource Manager en la región del usuario que envía la solicitud. Las solicitudes a la instancia de Azure Resource Manager de la región también se limitan por identificador de usuario principal y por hora. Cuando la solicitud se reenvía al proveedor de recursos, las solicitudes se limitan por región del recurso en lugar de por instancia de Azure Resource Manager en la región del usuario.
Nota:
Los límites de un proveedor de recursos pueden diferir de los límites de la instancia de Azure Resource Manager en la región del usuario.
En la imagen siguiente se muestra cómo se aplica la regulación a medida que una solicitud va del usuario a Azure Resource Manager y al proveedor de recursos.
Límites de la suscripción y el inquilino
Cada operación de nivel de suscripción y de nivel de inquilino está sujeta a límites. Las solicitudes de suscripción son las que implican pasar el identificador de suscripción, como recuperar los grupos de recursos de la suscripción. Por ejemplo, enviar una solicitud a https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups?api-version=2022-01-01
es una operación de nivel de suscripción. Las solicitudes de inquilino no incluyen el identificador de suscripción, como recuperar ubicaciones válidas de Azure. Por ejemplo, enviar una solicitud a https://management.azure.com/tenants?api-version=2022-01-01
es una operación de nivel de inquilino.
Los límites de regulación predeterminados por hora se muestran en la tabla siguiente.
Ámbito | Operaciones | Límite |
---|---|---|
Suscripción | lecturas | 12,000 |
Suscripción | eliminaciones | 15,000 |
Suscripción | escrituras | 1,200 |
Inquilino | lecturas | 12,000 |
Inquilino | escrituras | 1,200 |
Estos límites se limitan a la entidad de seguridad (usuario o aplicación) que realiza las solicitudes y el identificador de suscripción o el identificador de inquilino. Si las solicitudes proceden de más de una entidad de seguridad, el límite entre la suscripción o el inquilino es superior a 12 000 y 1200 por hora.
Estos límites se aplican a cada instancia de Azure Resource Manager. En cada región de Azure hay varias instancias, y Azure Resource Manager está implementado en todas las regiones de Azure. Por lo tanto, en la práctica, los límites son mayores que estos límites. Normalmente, las distintas instancias de Azure Resource Manager controlan las solicitudes del usuario.
Las solicitudes restantes se devuelven en los valores de encabezado de respuesta.
Límites del proveedor de recursos
Los proveedores de recursos aplican sus propios límites. Dentro de cada suscripción, el proveedor de recursos limita por región del recurso en la solicitud. Dado que Resource Manager limita por instancia de Resource Manager y hay varias instancias de Resource Manager en cada región, el proveedor de recursos puede recibir más solicitudes que los límites predeterminados de la sección anterior.
En esta sección se describen los límites de algunos proveedores de recursos ampliamente usados.
Limitación de almacenamiento
Los límites siguientes solo se aplican cuando se realizan operaciones de administración mediante Azure Resource Manager con Azure Storage y el proveedor de recursos de almacenamiento. Los límites se aplican por suscripción por región del recurso en la solicitud.
Recurso | Límite |
---|---|
Operaciones de administración de la cuenta de almacenamiento (lectura) | 800 por cada 5 minutos |
Operaciones de administración de la cuenta de almacenamiento (escritura) | 10 por segundo / 1 200 por hora |
Operaciones de administración de la cuenta de almacenamiento (lista) | 100 por cada 5 minutos |
Limitación de red
El proveedor de recursos Microsoft.Network aplica los siguientes límites:
Operación | Límite |
---|---|
Escritura/eliminación (PUT) | 1 000 por cada 5 minutos |
lectura (GET) | 10 000 por cada 5 minutos |
Además de esos límites generales, consulte los límites de uso de Azure DNS.
Limitación de proceso
Microsoft Compute implementa la limitación para proporcionar una experiencia óptima para los usuarios de máquinas virtuales y conjuntos de escalado de máquinas virtuales. Límites de limitación de proceso proporciona información completa sobre las directivas de limitación y los límites de las máquinas virtuales, los conjuntos de escalado de máquinas virtuales y las máquinas virtuales del conjunto de escalado.
Limitación de Azure Resource Graph
Azure Resource Graph limita el número de solicitudes para sus operaciones. Los pasos de este artículo para determinar las solicitudes restantes y cómo responder cuando se alcanza el límite también se aplican a Resource Graph. Sin embargo, Resource Graph establece su propio límite y tasa de restablecimiento. Para más información, consulte Encabezados de limitación de Resource Graph.
Azure Resource Graph también tiene una solución que permite un mecanismo adicional para obtener datos de recursos cuando se ha alcanzado los límites del proveedor de recursos mediante la integración perfecta con las API GET y LIST existentes del plano de control de Azure Resource Manager, que ofrecen una solución eficaz y escalable para el acceso a datos de recursos. Para obtener más información, consulte ARG GET/LIST API.
Otros proveedores de recursos
Para obtener información sobre la limitación en otros proveedores de recursos, consulte:
Código de error
Cuando alcance el límite, recibirá el código de estado HTTP 429 Demasiadas solicitudes. En la respuesta se incluye el valor Retry-After, que especifica el número de segundos que debe esperar la aplicación antes de enviar la siguiente solicitud. Si envía una solicitud antes de que transcurre el valor de reintento, la solicitud no se procesa y se devuelve un nuevo valor de reintento.
Si usa un SDK de Azure, es posible que el SDK tenga una configuración de reintento automático. Para más información, consulte la Guía de reintentos para servicios de Azure.
Algunos proveedores de recursos devuelven 429 para notificar un problema temporal. El problema podría ser una condición de sobrecarga que la solicitud no causó. O bien, podría ser un error temporal sobre el estado del recurso de destino o del recurso dependiente. Por ejemplo, el proveedor de recursos de red devuelve 429 con el RetryableErrorDueToAnotherOperation código de error cuando otra operación bloquea el recurso de destino. Para determinar si el error procede de la limitación o una condición temporal, vea los detalles del error en la respuesta.
Solicitudes restantes
Puede determinar el número de solicitudes restantes examinando los encabezados de respuesta. Las solicitudes de lectura devuelven un valor en el encabezado para el número de solicitudes de lectura restantes. Las solicitudes de escritura incluyen un valor para el número de solicitudes de escritura restantes. En la tabla siguiente se describen los encabezados de respuesta que puede examinar para esos valores:
Encabezado de respuesta | Descripción |
---|---|
x-ms-ratelimit-remaining-subscription-deletes | Eliminaciones restantes del ámbito de la suscripción. Este valor lo devuelven las operaciones de eliminación. |
x-ms-ratelimit-remaining-subscription-reads | Las lecturas con ámbito de suscripción permanecen. Este valor se devuelve en las operaciones de lectura. |
x-ms-ratelimit-Remaining-Subscription-Writes | Escrituras de ámbito de suscripción restantes. Este valor se devuelve en las operaciones de escritura. |
x-ms-ratelimit-Remaining-tenant-Reads | Lecturas restantes del ámbito del inquilino. |
x-ms-ratelimit-Remaining-tenant-Writes | Escrituras restantes del ámbito del inquilino. |
x-ms-ratelimit-Remaining-Subscription-Resource-Requests | Solicitudes restantes de tipo de recurso con ámbito de suscripción. Este valor de encabezado solo se devuelve si un servicio invalida el límite predeterminado. Resource Manager agrega este valor en lugar de las lecturas o escrituras de la suscripción. |
x-ms-ratelimit-Remaining-Subscription-Resource-Entities-Read | Solicitudes restantes de colección de tipo de recurso con ámbito de suscripción. Este valor de encabezado solo se devuelve si un servicio invalida el límite predeterminado. Este valor proporciona el número de solicitudes de recopilación restantes (enumerar recursos). |
x-ms-ratelimit-Remaining-tenant-Resource-Requests | Solicitudes restantes de tipo de recurso con ámbito de inquilino. Este encabezado se agrega para las solicitudes en el nivel de inquilino y solo si un servicio invalida el límite predeterminado. Resource Manager agrega este valor en lugar de las lecturas o escrituras del inquilino. |
x-ms-ratelimit-Remaining-tenant-Resource-Entities-Read | Solicitudes de colección de tipos de recursos restantes del ámbito del inquilino Este encabezado solo se agrega para las solicitudes en el nivel del inquilino, y solo si un servicio invalida el límite predeterminado. |
El proveedor de recursos también puede devolver encabezados de respuesta con información sobre las solicitudes restantes. Para obtener información sobre los encabezados de respuesta devueltos por el proveedor de recursos compute, consulte encabezados de respuesta informativa de frecuencia de llamadas.
Recuperación de los valores de encabezado
La recuperación de estos valores de encabezado en el código o script no es diferente de recuperar ningún valor de encabezado.
Por ejemplo, en C#, se recupera el valor de encabezado de un objeto HttpWebResponse denominado respuesta con el código siguiente:
response.Headers.GetValues("x-ms-ratelimit-remaining-subscription-reads").GetValue(0)
En PowerShell, recupere el valor del encabezado de una operación Invoke-WebRequest
.
$r = Invoke-WebRequest -Uri https://management.azure.com/subscriptions/{guid}/resourcegroups?api-version=2016-09-01 -Method GET -Headers $authHeaders
$r.Headers["x-ms-ratelimit-remaining-subscription-reads"]
Para obtener un ejemplo completo de PowerShell, consulte Comprobación de los límites de ARM para una suscripción determinada.
Para ver las solicitudes restantes para la depuración, proporcione el parámetro -Debug en el cmdlet PowerShell.
Get-AzResourceGroup -Debug
La respuesta incluye muchos valores, incluido el siguiente valor de respuesta:
DEBUG: ============================ HTTP RESPONSE ============================
Status Code:
OK
Headers:
Pragma : no-cache
x-ms-ratelimit-remaining-subscription-reads: 11999
Para obtener límites de escritura, use una operación de escritura:
New-AzResourceGroup -Name myresourcegroup -Location westus -Debug
La respuesta incluye muchos valores, incluidos los siguientes valores:
DEBUG: ============================ HTTP RESPONSE ============================
Status Code:
Created
Headers:
Pragma : no-cache
x-ms-ratelimit-remaining-subscription-writes: 1199
En la CLI de Azure, recupere el valor del encabezado mediante la opción más detallada:
az group list --verbose --debug
El comando devuelve muchos valores, incluidos los siguientes:
msrest.http_logger : Response status: 200
msrest.http_logger : Response headers:
msrest.http_logger : 'Cache-Control': 'no-cache'
msrest.http_logger : 'Pragma': 'no-cache'
msrest.http_logger : 'Content-Type': 'application/json; charset=utf-8'
msrest.http_logger : 'Content-Encoding': 'gzip'
msrest.http_logger : 'Expires': '-1'
msrest.http_logger : 'Vary': 'Accept-Encoding'
msrest.http_logger : 'x-ms-ratelimit-remaining-subscription-reads': '11998'
Para obtener límites de escritura, use una operación de escritura:
az group create -n myresourcegroup --location westus --verbose --debug
La operación devuelve muchos valores, incluidos los valores siguientes:
msrest.http_logger : Response status: 201
msrest.http_logger : Response headers:
msrest.http_logger : 'Cache-Control': 'no-cache'
msrest.http_logger : 'Pragma': 'no-cache'
msrest.http_logger : 'Content-Length': '163'
msrest.http_logger : 'Content-Type': 'application/json; charset=utf-8'
msrest.http_logger : 'Expires': '-1'
msrest.http_logger : 'x-ms-ratelimit-remaining-subscription-writes': '1199'
Pasos siguientes
- Para más información sobre los límites y cuotas, consulte Límites de suscripción y servicio de Azure, cuotas y restricciones.
- Para más información sobre el control de solicitudes REST asincrónicas, consulte Seguimiento de las operaciones asincrónicas de Azure.