通過自訂client-output-buffer-limit pubsub的值,您可以調整Tair(Redis OSS-compatible)執行個體為發布訂閱用戶端分配的緩衝區大小。當某個用戶端的緩衝區資料超過限制時,執行個體將斷開與該用戶端的串連,防止這些資料佔用過多的記憶體而影響執行個體服務的效能。
輸出緩衝區限制
Tair(Redis OSS-compatible)執行個體為每個用戶端分配了輸出緩衝區(output buffer)。當執行個體處理完用戶端的請求後,會將返回結果臨時儲存在輸出緩衝區中,然後將這些資料發送給用戶端。如果不對輸出緩衝區的大小做出限制,輸出緩衝區可能會積累大量資料,甚至達到最大記憶體限制,導致服務崩潰。以下是兩種典型情境:
用戶端命令的傳回值過大。
發行者(publisher)發布訊息的速度大於訂閱者(subscriber)消費訊息的速度。
合理地設定client-output-buffer-limit pubsub參數可以避免發布訂閱用戶端的輸出緩衝區佔用記憶體過大。
操作步驟
訪問執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。
在左側導覽列中,單擊參數設定。
在參數列表中,單擊client-output-buffer-limit pubsub右側操作列的修改。
在彈出的對話方塊中,依次設定
hard limit
、soft limit
和soft seconds
的值,並用空格隔開。參數說明:
hard limit
為強限制值,單位為Byte,當一個發布訂閱用戶端的輸出緩衝區佔用記憶體達到或超過hard limit
的限制時,Tair將斷開該用戶端的串連。soft limit
與soft seconds
為一組弱限制值,當一個發布訂閱用戶端的輸出緩衝區佔用記憶體達到或超過soft limit
(單位為Byte)的限制,且該狀態的期間達到soft seconds
(單位為s)時間長度時,Tair將斷開該用戶端的串連。
hard limit
、soft limit
和soft seconds
的預設值分別為33554432、8388608和60,即32 MB、8 MB和60 s。單擊確定。
設定完畢後您可以在控制台查看到設定後的值,您也可以使用redis-cli串連執行個體,然後執行CONFIG GET client-output-buffer-limit命令來查看設定後的值。
相關API
API介面 | 說明 |
API介面 | 說明 |
查詢執行個體的配置參數和運行參數。 | |
修改執行個體的參數配置。 |