
后端模块批量重启,重启时需要从数据库加载业务数据,因并发重启且该请求为慢SQL(几十秒),云数据库负载快速升高,部分请求开始超时,然后请求失败的模块无限重试,导致云数据库负载过大而崩溃,依赖该数据库的其他业务也全部故障
在短时间大量并发请求数据库,高峰期并发达到2200左右,导致数据库出现大量慢SQL,进而数据库性能急剧下降,多个业务页面展现变慢,性能退化明显
批量创建的任务,其执行时间完全一致,系统在瞬间对数据库请求大量数据,连接数上涨,导致该数据库上的所有业务均发生故障
某服务访问数据库错误导致响应下游请求合法用户列表的结果为空值,下游模块直接将所有用户的权限全部删除,导致系统完全不可用
没有专职DBA,云数据库的变更直接交由研发自己执行,研发多次数据库修改出现异常,导致服务故障和数据丢失
研发怀疑数据库性能恶化,因此就重启了数据库,重启期间,有一个模块请求数据库失败,就直接崩溃了
在华南部署的一套业务系统,连到华北的数据库,导致系统的响应时间长期居高不下,原因是一个页面包含了非常多的数据库请求,单个请求延时增加40ms,但几十个请求串行执行,延时足足增加了2s以上
慢SQL,也就是执行耗时的TOP-N
SQL优化
合理设置数据库连接数
执行耗时超过1s的SQL直接kill(对于部分场景可以进行自定义,如同步任务,写SQL,重要性较高的SQL等)
SQL问题较多的账号进行紧急封禁
高频SQL,也就是执行频次的TOP-N
通过业务层的缓存功能减少高频SQL


隔离部署&&读写分离,利用京东云的能力,可以快速搞定,所以放第一位
TOP-N的SQL,找出来容易,优化则需要研发配合,因此放第二位,可以先从那些执行时间几十秒的SQL开始下手
限流,或者在接入层进行,或者核心模块上进行开发,耗时略长,因此放第三位
参考文献:



