一.背景
因账目核对,目前要求是每月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负载监控,出现问题及时将开关关闭等等
标签:负载,db,DB,查询,线程,线上,推送,数据 From: https://www.cnblogs.com/developS/p/17592351.html