记一次线上DB负载上升问题

发布时间 2023-07-30 23:21:10作者: 四十四次日落95

一.背景

 因账目核对,目前要求是每月8日开始推送当月数据,因此需要8日推送整个1周数据(例:7月8日开始推送7月的数据)

二.问题

dba告知当前数据库所在集群负载增加30%以上,通过查询得知当前数据库与其他财务库两个库同属于一个集群,

集群负载过大会影响其他财务结算,支付等数据部分,产生很大的影响!

三.问题解决与复盘

通过监控查询到10:00-10:30分之间,当前db的负载查询次数最高已达到200万,平均也达到130万以上

紧急解决措施:先通过推送开关关闭推送,后续通过小批量推送!

数据推送流程:

1.获取本日期内最小最大数据ID

2.查询数据库每次获取1000条数据

3.线程池开启30个线程推送数据,同时更新推送完的数据状态

4.全部接口都同时推送,总共7个接口

 

原因:同时在推送数据,所以数据的获取的至少7倍的查询,同时推送数据很快,大约在150000条/分钟

在推送数据的过程中,同时还要更新数据的状态,查询db的数据量是比较大的,造成了短时间的负载增加!   

 

复盘:

1.改小线程数量,将线程设置为动态可配置的形式

2.推送时间点可改为晚上等业务高峰期小的时间段

3.拆分推送时间,尽可能避免同一时间段内多个任务同时推送

4.若要大量连续推送数据,及时关注db负载监控,出现问题及时将开关关闭等等