pull/6/head
xuxueli 7 years ago
parent 4ce20c1038
commit 85f042bb0b

@ -639,15 +639,22 @@ org.quartz.threadPool.threadPriority: 5
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread: true org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread: true
``` ```
XXL-JOB系统中业务逻辑在远程执行器执行调度中心每次触发调度时仅发送一次调度请求执行器会将请求存入执行队列并且立即响应调度中心相比直接在quartz的QuartzJobBean中执行业务逻辑极大的降低了调度线程占用 XXL-JOB系统中业务逻辑在远程执行器执行全异步化设计,调度中心每次触发调度时仅发送一次调度请求,执行器会将请求存入执行队列并且立即响应调度中心,异步运行相比直接在quartz的QuartzJobBean中执行业务逻辑极大的降低了调度线程占用时间
XXL-JOB调度中心中每个JOB逻辑非常 “轻”单个JOB一次运行平均耗时基本在 "10ms" 之内基本为一次请求的网络开销因此可以保证使用有限的线程支撑大量的JOB并发运行 XXL-JOB调度中心中每个JOB逻辑非常 “轻”单个JOB一次运行平均耗时基本在 "10ms" 之内基本为一次请求的网络开销因此可以保证使用有限的线程支撑大量的JOB并发运行
理论上采用推荐机器配置 "4核4G内存"情况下,单线程可以承担 100quartz最小时间粒度1000ms/触发一次任务耗时10ms个密集任务每秒执行一次的正常调度触发。因此默认配置的15个线程理论上可以承担起1500个密集任务的正常运行。 理论支撑任务量公式如下:
实际场景中调度请求网络耗时不同、DB读写耗时不同、任务密集或稀疏调度情况不同会导致任务量上限会上下波动。 理论支撑任务量 = 线程数配置 / 平均调度频率(每秒) * 平均触发耗时单位s
如若需要支撑更多的任务量,可以通过 "调大调度线程数" 和 "提升机器配置" 两种方式实现。 理论上采用推荐机器配置 "4核4G内存" + "配置1s运行1次密集任务" + "调度中心与执行器ping延迟10ms0.01s" 的情况下,
- 单线程支撑任务量 1 / 1 * 0.01 = 100个任务
- 15个线程支撑任务量15 / 1 * 0.01 = 1500个任务
实际场景中由于调度中心与执行器ping延迟不同、DB读写耗时不同、任务调度密集程度不同会导致任务量上限会上下波动。
如若需要支撑更多的任务量,可以通过 "调大调度线程数" 、"降低调度中心与执行器ping延迟" 和 "提升机器配置" 几种方式实现。
#### 5.4.5 @DisallowConcurrentExecution #### 5.4.5 @DisallowConcurrentExecution
XXL-JOB调度模块的“调度中心”默认不使用该注解即默认开启并行机制因为RemoteHttpJobBean为公共QuartzJobBean这样在多线程调度的情况下调度模块被阻塞的几率很低大大提高了调度系统的承载量。 XXL-JOB调度模块的“调度中心”默认不使用该注解即默认开启并行机制因为RemoteHttpJobBean为公共QuartzJobBean这样在多线程调度的情况下调度模块被阻塞的几率很低大大提高了调度系统的承载量。

Loading…
Cancel
Save