Mark Ku's Blog
首頁 關於我
Redis 的 黑色星期五
Infra
Redis 的 黑色星期五
Mark Ku
Mark Ku
November 26, 2023
1 min

事件

2023年的美國時間黑色星期五,一早被 Call 了起來,運營在網站折扣給到 400~650美金,瞬間湧進大量的人,每秒都有人下單,訂單量是平常的XX倍以上,網站加載頁面後後無法正確在redis 拿到即時庫存,導致畫面卡死在加載從 Redis 拉取庫存時顯示的 Loading 按鈕上,造成了用戶正確加入購物車。

image
image

分析問題

經過調查發現 3台Redis 同步異常,分析硬體效能後發現這三台 Redis slave 容器在一台巢狀的 Hyper-v host中 ,依序檢檢查CPU 、記憶體、硬碟IO、且共用一張網卡,Windows Host 被分配的記憶體只有16G ,Docker Desktop 最高只有 8GB的記憶體可以使用,且使用率都是接近滿載,推測記憶體資源不足是導致同步異常的主因,最後把那台的 Host裡的 Redis 容器實體關掉一個,讓 Host 資源能能夠被充份使用。

image
image

解決方案

短期

  • 關閉一個實體,讓Host 能被正常使用
  • 加大記憶體

中期

  • 用Nginx 替換掉很浪費硬體資源的巢狀 Hyper-v
  • 調整 Redis 緩存淘汰機制設定,沒有用到的要將期釋放。

長期

  • 可以考慮採用Redis Cluster ,透過分片。
  • 用 linux 容器替代 Windows Server
  • 導入 K8S 自動部署、擴展和管理容器化應用程序的系統。

參考

  • Redis的主从复制是如何做的?复制过程中也会产生各种问题?
  • Redis 的缓存淘汰机制(Eviction)

Tags

Mark Ku

Mark Ku

Software Developer

9年以上豐富網站開發經驗,開發過各種網站,電子商務、平台網站、直播系統、POS系統、SEO 優化、金流串接、AI 串接,Infra 出身,帶過幾次團隊,也加入過大團隊一起開發。

Expertise

前端(React)
後端(C#)
網路管理
DevOps
溝通
領導

Social Media

facebook github website

Related Posts

利用 Powershell 遠端建置及佈署 Windows Docker Desktop 容器
利用 Powershell 遠端建置及佈署 Windows Docker Desktop 容器
May 31, 2023
1 min

Quick Links

關於我

Social Media