天天看点

记一次线上缓存瞬间打满的事故

基础信息
服务器集群环境 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