xxl-job 调度服务器集群部署,压力测试显示任务调度分配不均匀

8yoxcaq7  于 2021-12-06  发布在  Java
关注(0)|答案(10)|浏览(517)

Please answer some questions before submitting your issue. Thanks!

Which version of XXL-JOB do you using?

2.3.0

Expected behavior

两台调度服务器,应该均匀调度,在性能监控表现上大致相同

Actual behavior

一台线程数飙升,cpu负载升高,另外一台间歇性的线程数上升

Steps to reproduce the behavior

  1. 测试配置
    name | pods | cpu | memory
    xxl-job-admin | 2 | 2000m | 8G
    xxl-job-executor | 5 | 2000m | 4G
    任务配置:
    2600 | 一致性HASH | 测试1小时 | 任务分布: 第0秒触发2000个,第1秒触发400个,第2秒触发200个
    参数配置:

jvm监控:
调度服务器一

调度服务器二

可用从监控数据中看出两台机器的性能表现差异巨大,绝大部分压力都落在了其中一台上面,达不到预期的分布式水平扩展的目的

想请教作者这个问题的原因,以及如何实现最近配置达到调度服务器均摊压力的目的

Other information

2izufjch

2izufjch1#

任务配置选择轮询

zvokhttg

zvokhttg2#

任务触发,是通过接口触发修改任务状态?还是直接调用trigger接口执行调度?

anauzrmj

anauzrmj3#

直接创建2600个任务,配置好cron表达式

mrwjdhj3

mrwjdhj34#

这两台机器连接的数据库是同一个数据库?

wb1gzix0

wb1gzix05#

是的,两个调度服务器集群部署,通过域名来和执行器通信,使用同一个数据库

2w3kk1z5

2w3kk1z56#

你可以在执行器的机器上打印下,调度器的机器ip。应该只有一个调度中心的ip地址。

k97glaaz

k97glaaz7#

@

那和这说明的不一致啊 #1875

ct2axkht

ct2axkht8#

int preReadCount = (XxlJobAdminConfig.getAdminConfig().getTriggerPoolFastMax() + XxlJobAdminConfig.getAdminConfig().getTriggerPoolSlowMax()) * 20;
默认一次获取的任务数量是6千。

byqmnocz

byqmnocz9#

现在问题是在这个任务量下,已经出现大量任务misfire和线程池满了的错误

wf82jlnq

wf82jlnq10#

任务刚启动会出现大量的misfire,不过下次再调度就不会出现了。线程池满的原因是fastTriggerPool最大线程数是200。线程队列只有1千。
可以修改下源码。

相关问题