從Node Redis遷移到Ioredis後CPU 使用率減少了 30% - Ably

banq發表於2021-11-26

 Node Redis 作者試圖在處理緩衝區時做正確的事情(即避免資料複製),但這實際上導致了效能相當糟糕的情況。這對我們來說不是最佳選擇,因為我們呼叫的 Redis 函式具有許多小引數,因此執行了許多套接字寫入。
我們對 Node Redis 與 Ioredis 進行了一些獨立測試,Ioredis 展示了顯著的效能改進,主要是因為它在傳送批處理之前複製了緩衝區中的所有引數。這意味著更少的套接字寫入和更多的副本。幸運的是,後者對我們來說無關緊要,因為我們的論點從未達到令人擔憂的程度。此外,結果擴充套件到具有完整工作負載的生產效能改進。
我們在遷移過程中遇到了一些障礙,但這是(令人遺憾的)可以預料的。遷移程式碼後,我們執行了一些 CPU 使用率的真實負載測試。結果令人鼓舞。
對於 Node Redis,我們注意到大多數依賴項仍然是正在積極開發的實時程式碼,並且成熟度並不統一:一些特性被廣泛採用並經過良好測試,但其他特性則不然。這是可行的,前提是:
  • 您預見到這些問題,並確保評估和測試您打算使用的特定功能或配置;和
  • 採用者回饋社群以幫助成熟和維護軟體。

Ioredis將自己描述為“強大的、功能齊全的 Redis 客戶端,被世界上最大的線上商務公司阿里巴巴和許多其他很棒的公司使用”。根據npmcompare 的說法,它自 2015 年以來一直存在,所以它比 Node Redis 年輕五歲,但似乎更積極地工作。
更多點選標題

相關文章