记一次线上Redis 报错 ERR max number of clients reached ,Redis 宕机生产事故
一、前提交代:
新需求,参与商城品牌首单价促销价格,需要在指定时间内,已购买过指定门槛品牌。
商城内关于商品价格展示接口都需校验改商品关联的促销活动是否参加 品牌首单价门槛促销,商品详情页、订单结算页、商品列表页、购物车预览页。
线上Redis 手动搭建在阿里云linux服务器内,单机版本。且此服务器部署了一台商城服务
注意这里
由于促销活动属于高并发,高流量业务,选择把门槛品牌,门槛购买时间等信息用String 数据结构存储Redis中 数据结构如下
Redis中 BD=2
String类型 Key:promotion:brand:firstPrice:purchasedBrand:促销活动id
Value:{
"purchasedBrandList": [
{
"brandId": 9710,
"brandName": "咿儿润"
}
],
"purchasedEndTime": 1678247960000,
"purchasedStartTime": 1677643160000,
"buyStartTime": 1678247960000,
"buyEndTime": 1678247960000,
"status": 0
}
二、开发需求
开发需求期间发现前同事写的Redis 操作工具类无法选择指定DB进行存储,默认在db=0
public <T> T get(String key, String modulePrefix, Class<T> t) {
checkJedisPool(); // 检测JedisPool 是否为空
key = generateKey(key, modulePrefix);// 组装key前缀
try

文章讲述了在上线新功能后,由于Redis单机版本达到最大客户端连接数引发的生产事故。问题源于旧的Redis操作工具类未正确归还连接,以及系统在高并发场景下对Redis的大量请求。解决方案包括增大Redis的最大连接数,临时迁移至阿里云TariDB集群,并优化Redis交互工具类,确保连接关闭。
最低0.47元/天 解锁文章
3701

被折叠的 条评论
为什么被折叠?



