天天看點

記一次線上緩存瞬間打滿的事故

基礎資訊
伺服器叢集環境 500+台
緩存叢集 三主三叢,單節點600M,叢集:3600M
峰值流量 10W+ (其中針對部分接口新增防重送出邏輯(限制操作1000次/s))
零點峰值情況:
伺服器叢集TPS 10W+
緩存叢集(LRU)

00:00 其中一個主節點資訊

TPS: 23779次/ s

記一次線上緩存瞬間打滿的事故
用戶端連接配接數:17545 ,連結數持續時間:30min
記一次線上緩存瞬間打滿的事故
用戶端每秒建立連接配接數:7872個/s
記一次線上緩存瞬間打滿的事故
已使用記憶體峰值:798M
記一次線上緩存瞬間打滿的事故
key的每秒淘汰數:14694個/s
記一次線上緩存瞬間打滿的事故
key總量:
記一次線上緩存瞬間打滿的事故
用戶端緩存配置
記一次線上緩存瞬間打滿的事故

針對服務叢集流量0點峰值情況,緩存叢集主節點以每秒7872個進行建立且key總量并無明顯曾長反而直線下降,推斷出叢集中的key并無明顯增長,記憶體占用反而大幅度提高,聯系運維發現叢集中每個連接配接都會占用緩存叢集的記憶體資源,用戶端連結數單主節點達到了17545個,平時值為2691,記憶體量峰值:798M,第一次平坡 432M,半小時後:129M

推測:

暴增連結數 = 17545 - 2691 = 14854 個

連接配接數占有記憶體:798為新增key和連接配接占用總數,防重key失效時間為1秒,第一次平穩時key為淘汰防重key的記憶體數,第二次平穩為釋放連結後記憶體數,推出

連接配接數占有記憶體:432 - 129 = 303 M

得每個連接配接占用記憶體數: 303 * 1024 / 14854 = 20.89K