博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
redis引发的一系列生产问题
阅读量:4647 次
发布时间:2019-06-09

本文共 610 字,大约阅读时间需要 2 分钟。

描述背景:

账务系统,峰值时每秒大概处理200笔请求(收单,转账,退款等等)。

某其他业务线上线新功能,有BUG,瞬间往redis中写入7G数据,redis系统瘫痪。

redis系统重启。

账务系统开始报无法从redis连接池中获取连接。账务系统内有大量的redis锁,用来做并发控制。

问题解决过程:

发现redis连接池占满。

公司有定时系统,各系统都通过定时系统来驱动自己的业务系统做补偿,与定时系统同机房的直接请求极高。与定时系统不同机房的机器请求数量不高。

找领导,把公司的定时系统停掉,把redis的连接池数量翻倍,数据不再积压,开始缓慢下降。

总结:

核心系统要有自己的组件,比如一个独立的redis。

不要信任上游系统,要有一定的限流机制,不然它可能会一秒发过来N个请求。

自己的系统的队列系统要可以关闭开启,还要可以控制处理速度,这样可以暂时的撇开已经积压的数据,让新进来的交易可以正常进行。

当一笔请求失败,如果有补偿,那么它可能会造成N个补偿,让请求量剧增。问题就出在这个其他系统的补偿上。

为什么平时没事情,一旦出现波动,系统就全面瘫痪?想到一个词,雪崩效应和竞争。

系统要有全面的监控,监控这种池,各种内存,CPU,当资源几乎满状态下,一个波动就可能造成崩溃。

重要关键系统要有容灾预案。

转载于:https://www.cnblogs.com/coolgame/p/10274278.html

你可能感兴趣的文章
数组常用的API——splice()截取
查看>>
sbt教程
查看>>
djang1.7 复制粘贴小项目(generic View的使用)
查看>>
Python For Delphi---更好地协同(续)
查看>>
Java的内存泄漏
查看>>
152-PHP htmlspecialchars函数
查看>>
061-PHP函数定义默认参数
查看>>
Genymotion下载模拟器失败解决方案
查看>>
The Apostrophe and the Quote Function ‘和引用函数 未翻译完)
查看>>
kv.go
查看>>
利用截取字符串,生成已声明的字符串中的4位随机验证码。
查看>>
Spring 事务模型
查看>>
【MM系列】SAP S/4 HANA BP创建客户/供应商的一点想法
查看>>
【HANA系列】SAP HANA XS使用JavaScript数据交互详解
查看>>
【HANA系列】SAP HANA SQL获取上周的周一
查看>>
对称矩阵
查看>>
轮播图笔记!
查看>>
值类型与引用类型
查看>>
This kernel requires an x86-64 CPU, but only detected an i686 CPU.
查看>>
PAT 1023 Have Fun with Numbers[大数乘法][一般]
查看>>