侧边栏壁纸
博主头像
搞钱拒绝ICU

行动起来,活在当下

  • 累计撰写 13 篇文章
  • 累计创建 5 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

记录一次调用flex-job耗时慢优化

admin
2024-05-08 / 0 评论 / 0 点赞 / 8 阅读 / 0 字

一、背景介绍

felx-job是内部基于xxl-job二开的分布式定时任务平台,提供部门统一的定时任务管理。某次反馈查询任务列表慢。

使用arthas的trace命令查看耗时

trace com.xxl.job.admin.service.XxlJobService queryJobs

耗时:4600ms+

 二、分析过程

1、看上图trace结果,发现时间对不上,是因为有些类和函数未被trace追踪到,比如jdk的方法,加上不忽略jdk方法

trace --skipJDKMethod false com.xxl.job.admin.service.impl.XxlJobServiceImpl queryJobs -n 5

3、然后发现是stream耗时,查看代码,是流中循环查日志表xxl_job_log表耗时久

根据job_id查询且根据id排序

4、xxl_job_log日志表会很大几天就可能有千万数据

三、优化

  1. 添加job_id和id的联合索引优化

CREATE INDEX "I_job_id" ON "xxl_job_log" USING btree (
    "job_id",
    "id"
    );

  1. 耗时降到20ms+,此时日志表数据50w左右,结合xxl_job中配置日志保留7天,后续应该不会有性能问题

0

评论区