跳至主要內容

Redis 大小配置

本頁說明 LiteLLM Proxy 後方的 Redis 執行個體大小,當您有超過一個閘道執行個體時,就應立即執行。Postgres 的大小配置則會在 資料庫大小配置 中另外說明。關於如何將 Redis 連接到 proxy,請參閱 Production Best Practices 的 Redis 章節以及 快取設定。

Proxy 對 Redis 的需求​

Redis 保存速率限制計數器、路由器與冷卻狀態、回應快取,以及在 use_redis_transaction_buffer 開啟時的花費更新佇列。這些全都是生命週期很短的即時狀態,而非持久歷史,因此 Redis 的特性是小且對延遲敏感,而不是大:即使在高流量下,幾 GB 的工作集也很常見。請把 RAM 視為您選擇要快取內容的預留空間,而不是請求速率的函數,並把 vCPU 數量視為決定吞吐量的因素,因為單一 Redis 處理程序是單執行緒,而 TLS 終止會與同一核心上的命令執行競爭。

沒有 Redis 時,每個執行個體會各自套用速率限制,而快取命中只會保留在處理該請求的執行個體本機,因此十個 pod 的叢集套用的限制大約是您設定值的十倍。

依請求速率配置大小​

持續 RPSvCPURAM
最多 1K28GB
1K 到 5K416GB
5K 以上8+32GB+

請執行 Redis 7.0 或更新版本。請將大小配置到在正常運作期間不會發生清除,並優先增加容量,而不是依賴清除策略:速率限制計數器與排隊中的花費更新都是即時記帳狀態,因此在壓力下發生清除的執行個體,損失的是花費更新並重設限制視窗,而不只是快取命中。若您使用 transaction buffer,也請啟用持久化,這樣在發生 failover 時,不會把已排隊但尚未刷入 Postgres 的花費更新丟掉。

當流量超過約 1000 RPS 或 10 個執行個體時,buffer 才是避免 Postgres 成為瓶頸的關鍵,這使得 Redis 成為記帳路徑的一部分,而非可選快取;請參閱 Redis transaction buffer。如果您在負載下看到 Got exception from REDIS No connection available,請先在 cache_params 中提高 max_connections,再考慮更大的執行個體,因為該錯誤是用戶端連線池耗盡,而不是伺服器飽和。

雲端建議​

請使用 ElastiCache 搭配 Valkey 或 Redis OSS 引擎,版本 7.x 或更新,並使用 Graviton 節點;cache.m7g.large(6.38 GiB)可支援到 1K RPS,而 cache.m7g.xlarge(12.93 GiB)則適用於更高流量;支援的節點類型 清單列出的是每個節點可用記憶體,低於名義上的執行個體記憶體,因此請依該欄位而非執行個體名稱來規劃大小。生產環境請執行 Multi-AZ with automatic failover。如果單一節點已不敷使用,請優先選擇叢集模式並搭配 LiteLLM 的 Redis Cluster 設定,而不是改用更大的節點,因為分片會把計數器 keyspace 分散到多個處理程序,而不是全部堆到單一處理程序上。ElastiCache Serverless 適合純快取,但不適合 valkey-search 上的語意快取,後者需要以節點為基礎的叢集。

監控項目​

請監看記憶體使用量相對於 maxmemory 的比例以及清除計數器,因為在這裡清除代表的是默默的正確性損失,而不是快取命中率問題。在 LiteLLM 端,有用的 Prometheus 訊號是 litellm_redis_spend_update_queue_size 與 litellm_in_memory_spend_update_queue_size,它們代表排隊中而非已寫入的花費更新,以及 litellm_pod_lock_manager_size,它指出目前是哪個 pod 持有 transaction buffer flush lock。用戶端連線數也很重要:每種受管理服務都有每個執行個體大小的連線上限,而 gateway 會為每個 worker 開啟連線池。

LiteLLM Enterprise
為正式環境打造的 SSO/SAML、稽核記錄、支出追蹤、多團隊管理與防護欄。
深入瞭解 →