当前位置: 首页 > article >正文

记一次性能调优-20250320

       2月份年后上班,刚过完年,还没从喜悦中解放出来,凌晨3点的时候同事就给我打电话,晚上的批量处理任务卡住了,快帮忙看看,做了几分钟的心里建设之后从被窝爬起来,看着手机上好几电话,赶紧开始看看咋回事。

       第一步,找到问题,批量处理的任务 1点多就开始不再运行,三点多才被发现,赶紧先让任务运行起来呀,尝试重启任务,没有用,再看看,数据量太大了,任务执行超时停止了,原来的代码没有真实应付差事,前辈们优化好几轮,都是浅尝辄止,没什么有效的操作,紧急部署也是来不及了,就对任务数据做分批处理,紧急拆分任务,总算开始跑了,就是太慢了,10秒才3条交易处理完成,看着上百万的数据量,眼前就那么一黑啊,有种想提桶跑路的冲动,继续拆分,拆了20000多个任务去处理,总算是好一点了,大概三个小时能跑完。

      继续监控任务执行情况,趁着监控的时候,看看前面几天的批量处理任务日志,我去,年前的一个小时执行时间涨到夸张的6个小时,各位运维的同事在做什么?今天晚上总算跑不动了!我们真的是有一个神仙客户啊,这样都没投诉。看看问题在哪?年前一波促销,业务量暴增,数据量也是好几番啊,找到耗时长的代码段,又是前辈的炫技,除了花里胡哨,就是烂。

总结分析:问题1,代码花里胡哨的,但是无效处理太多,重复太多,造成耗时大增,处理方案优化代码,删除无效逻辑。

                   问题2:一个sql 查询,五六张表,各种条件随便在后面加,优化方案,拆分sql,综合考虑应用和sql耗时,非索引条件,根据数据量考虑是否放在应用中处理。

                  问题3: 数据库选型不适合,数据库架构不适用于现在千万级数据处理,这个是个大活,只能徐徐图之,总有种当年骗钱来着的感觉。

                  补充解决方案:1,动态拆分批量处理任务,将一个总的任务根据数据量动态拆分若干子任务。 

                  2,增加监控,在1个小时内没有完成就对运维人员的告警。

      差不多整理完问题并且完成修复,批处理任务也结束了,一看时间,哋,快8点了,赶紧洗漱一下,去吃个早饭,然后和周公一起骂前辈去了。


http://www.kler.cn/a/593979.html

相关文章:

  • 【嵌入式硬件】 天线与距离问题
  • JVM常用概念之压缩引用
  • C语言的setjmp和longjmp:可以作异常处理
  • 【数据分享】2000—2024年我国乡镇的逐月归一化植被指数(NDVI)数据(Shp/Excel格式)
  • 微信小程序面试内容整理-请求优化
  • 经典面试题:C/C++中static关键字的三大核心作用与实战应用
  • 计算机四级 - 数据库原理(操作系统部分)- 第4章「并发与同步」
  • Numpy broadcasting规则
  • 3.20学习总结 java面向对象+string函数
  • New Friends(并查集)
  • Vue.js 组件开发全解析:从基础概念到实战应用
  • Compose Indication:点击效果设置
  • 碰一碰发视频后端源码技术,支持OEM
  • Python绘图技巧,主流绘图库
  • UI设计中的信息架构:组织内容的艺术
  • java项目之基于ssm的疫苗预约系统(源码+文档)
  • 【面试场景题-你知道readTimeOutException,会引发oom异常吗】
  • 详解加实操C++之分配器
  • 【QT】系统事件入门 -- 文件 QFile基础和示例
  • 介绍一下TiDB、RocksDb、levelDB、LSM 树、SSTable。