Simple Message Queue (formerly MNS) aplica uma política de limitação a solicitações que excedem o limiar definido para evitar pressão excessiva sobre os recursos subjacentes. Compreender essa política ajuda a planejar adequadamente a frequência de envio e recebimento de mensagens e a tomar as medidas apropriadas quando a limitação for acionada.
Comportamento de limitação
Quando o tráfego se aproxima ou atinge o limiar de limitação, o servidor ajusta esse limiar automaticamente e de forma elástica com base no uso de recursos em tempo real. Na maioria dos cenários, isso permite suportar dinamicamente mais solicitações simultâneas sem que os usuários percebam. Se uma limitação temporária for acionada (por exemplo, devido a picos repentinos de tráfego ou gargalos de recursos do cluster), o sistema restaura a capacidade de processamento de tráfego e aumenta sincronamente o limiar de limitação após a conclusão do dimensionamento automático.
Ao acionar a limitação, o sistema ativa um mecanismo de contrapressão. O servidor retém brevemente as solicitações que excedem o limiar e retorna um erro 429 (TooManyRequests). A duração dessa retenção é ajustada dinamicamente com base na carga em tempo real, geralmente entre 10 e 500 milissegundos, com máximo de 5 segundos. Essa medida impede a sobrecarga do sistema, o que poderia comprometer o desempenho e a estabilidade gerais.
Código de erro
Quando a política de limitação é acionada, o servidor do Simple Message Queue (formerly MNS) retorna as seguintes informações de código de erro.
|
Código de status HTTPS |
Código de erro |
Mensagem de erro |
|
429 |
TooManyRequests |
The request is denied by cluster flow limiter for too many requests. |
Limiares de limitação
Política de limitação por consumo anormal no modo de consumo de fila
No padrão convencional de consumo de fila, após processar uma mensagem com sucesso, o cliente deve enviar uma solicitação ao servidor para excluí-la. Se um cliente apresentar repetidamente o comportamento não padrão de "receber mensagens sem enviar solicitações de exclusão", o sistema sinaliza isso como consumo anormal e aciona um mecanismo de limitação para garantir a estabilidade. Após a aplicação da limitação, a taxa de recebimento de novas mensagens pelo cliente diminui significativamente.
A limitação é acionada quando qualquer uma das condições a seguir for atendida:
Duração: O consumo anormal persiste por mais de 30 minutos.
Contagem de mensagens: O número acumulado de mensagens recebidas, mas não excluídas, atinge 5.000.
Taxa de tráfego: A taxa instantânea de mensagens recebidas e não excluídas ultrapassa 1.000 TPS.
Política de limitação para solicitações de alto tráfego
O limiar de limitação padrão por conta Alibaba Cloud por região é de 20.000 TPS. Se o seu tráfego exceder 20.000 TPS, faça login no console do Quota Center para solicitar um aumento do TPS máximo por região. Para obter etapas detalhadas, consulte Envie uma solicitação para aumentar uma cota.
Regras de contagem de solicitações:
Cada chamada de API conta como uma solicitação.
Cálculo de TPS em cenários de envio em lote: Ao chamar a operação BatchSendMessage para uma fila, o TPS do BatchSendMessage = solicitações reais de BatchSendMessage por segundo × número de mensagens por solicitação. Por exemplo, se o BatchSendMessage for chamado 100 vezes por segundo e cada chamada contiver 10 mensagens, o TPS consumido por uma única fila será 100 × 10 = 1.000.
Cálculo de TPS em cenários de consumo em lote: Ao chamar a operação BatchReceiveMessage para uma fila, o TPS do BatchReceiveMessage = solicitações reais de BatchReceiveMessage por segundo (independentemente do número de mensagens por lote). Por exemplo, se o BatchReceiveMessage for chamado 100 vezes por segundo e cada chamada contiver 10 mensagens, o TPS consumido por uma única fila será 100.
Como evitar o impacto da limitação
Para evitar que a política de limitação afete seus negócios, concentre-se nos dois aspectos a seguir:
Planeje o tráfego cuidadosamente e comunique picos com antecedência: Se você prevê um crescimento de tráfego em grande escala e o TPS excede o valor máximo solicitável no console do Quota Center, crie um ticket para entrar em contato com o suporte técnico. Assim, é possível reservar mais recursos e evitar o acionamento da limitação.
Monitoramento e alertas: Recomendamos integrar o Simple Message Queue (formerly MNS) ao recurso Crie uma regra de alerta. Visualize o uso de TPS em tempo real de cada fila ou tópico no console do CloudMonitor (CloudMonitor console > Cloud Service Monitoring > Message Service MNS) para detectar quando o limiar de limitação está sendo atingido.