zoukankan      html  css  js  c++  java
  • redis引发的一系列生产问题

    描述背景:

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

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

    redis系统重启。

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

    问题解决过程:

    发现redis连接池占满。

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

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

    总结:

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

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

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

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

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

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

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

  • 相关阅读:
    mac os 添加用户到组 命令
    mac下 codeigniter在apache下去掉index.php
    chrome的timeline中stalled问题解析
    Message Queue vs. Web Services?
    使用bootstrap框架的模态框与ckeditor产生冲突,ckeditor的弹出窗不可用时的解决方法
    file_get_contents微信头像等待时间过长的原因
    javascript学习笔记
    javascript学习笔记
    javascript学习笔记
    javascript学习笔记
  • 原文地址:https://www.cnblogs.com/coolgame/p/10274278.html
Copyright © 2011-2022 走看看