全部產品
Search
文件中心

Simple Message Queue (formerly MNS):限流策略

更新時間:Jan 14, 2026

Simple Message Queue (formerly MNS)對超過限流閾值的請求執行限流策略,從而避免底層資源承受過高壓力。

限流行為

當流量接近或達到限流閾值時,服務端會根據即時資源水位自動彈性調整限流閾值,在多數情境下,可動態支撐更高並發請求且使用者無感知。若觸發臨時限流(如突發峰值激增、叢集資源瓶頸等),系統將在自動擴容完成後恢複流量處理能力並同步提升限流閾值。

當觸發限流報錯時,系統將啟動反壓機制,此時超出閾值的請求會在服務端被暫時掛起約500毫秒後返回,避免系統因過載而影響整體效能和穩定性。

錯誤碼

觸發限流策略後,Simple Message Queue (formerly MNS)服務端會返回如下錯誤碼資訊。

HTTP狀態代碼

錯誤碼Code

錯誤描述資訊Message

429

TooManyRequests

The request is denied by cluster flow limiter for too many requests.

限流閾值說明

隊列消費模式下的異常行為限流策略

在標準的隊列消費模式中,用戶端在成功處理訊息後,應在服務端刪除該訊息。如果用戶端大量出現“只接收訊息,但不發送刪除訊息請求的非標準行為,系統將視其為異常消費,並觸發限流機制以保障系統穩定性。限流後,用戶端接收新訊息的速度會大幅降低。

觸發限流的閾值(滿足任一條件即可):

  • 期間:該異常行為持續超過 30 分鐘。

  • 訊息數量:累計接收但未刪除的訊息總量達到 5,000 條。

  • 流量速率:接收但未刪除的瞬時速率超過 1,000 TPS。

大流量請求的限流策略

每個主帳號每個地區限流閾值預設值:20000 TPS。如果流量已超過20000 TPS,可提交工單提高預設限流閾值。

請求次數計數說明如下:

  • 每調用API介面1次,計為1次請求。

  • 批量發送情境TPS疊加:當使用BatchSendMessage介面請求某隊列時,BatchSendMessage的TPS = BatchSendMessage每秒實際請求次數×介面中的訊息條數。例如,BatchSendMessage介面1秒中實際請求次數是100,介面中包含10條訊息,則佔用單個隊列TPS=100×10 = 1000。

  • 批量消費情境TPS疊加:當使用BatchReceiveMessage介面請求某隊列時,BatchReceiveMessage的TPS = BatchReceiveMessage每秒實際請求次數×介面中的訊息條數。例如,BatchReceiveMessage介面1秒中實際請求次數是100,介面中包含10條訊息,則佔用單個隊列TPS=100×10 = 1000。

避免限流影響

為了避免限流策略對您業務的影響,請您關注以下兩方面:

  • 合理規劃流量,提前溝通高峰流量:如果您預計會有大規模流量增長,請提交工單與我們聯絡,我們將為您預留更多資源,避免觸發限流。

  • 監控和警示:建議您接入Simple Message Queue (formerly MNS)監控工具,即時瞭解流量和限流狀態,及時採取應對措施。

常見問題

我的業務是否只能支援20000 TPS?

不是。20000 TPS 是預設保障值,實際支援的 TPS 可能更高,具體取決於叢集負載和彈效能力。

為什麼有時超過20000 TPS會報錯,有時不會?

這與叢集的即時負載有關。當資源充足時,系統會彈性支撐更高TPS,當資源緊張時,可能會觸發限流。

限流報錯是否會影響我的業務?

限流報錯是系統保護機制的一部分,目的是防止叢集過載導致更大範圍的服務中斷。我們會儘快擴容以恢複服務,建議您在收到限流報錯時稍作等待或重試。

為什麼有時會觸發限流,有時不會?

系統的彈效能力和限流行為與以下因素密切相關:

  • 叢集當前負載:如果叢集資源充足,系統會儘力支撐更高的TPS。

  • 流量波動情況:突發流量可能導致短時間內資源緊張,從而觸發限流。

  • 擴容速度:自動擴容需要一定的時間,在此期間可能會出現短暫的限流現象。

因此,是否觸發限流並非固定不變,而是取決於即時的叢集狀態和流量情況。