Ich habe alle Zeitpläne als Crontrigger mit der Fehlzündungsrichtlinie „MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY“.
< strong>Quarz-Konfiguration:
Code: Select all
spring:
application:
name: my-scheduler-service
quartz:
job-store-type: jdbc
jdbc:
initialize-schema: never # Let Flyway handle initialization
properties.org.quartz:
scheduler:
batchTriggerAcquisitionMaxCount: 600
instanceName: JobScheduler
instanceId: AUTO
threadPool:
class: org.quartz.simpl.SimpleThreadPool
threadCount: 600 # Todo: determine appropriate size here
threadPriority: 5
jobStore:
maxMisfiresToHandleAtATime: 400
acquireTriggersWithinLock: true
isClustered: true
driverDelegateClass: org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
resources:
global:
enabled: true
url:
hikari:
poolName: GlobalDBPool
minimumIdle: 20
maximumPoolSize: 50
Probleme
- Wir haben den Dienst auf Kubernetes mit 4 Pods bereitgestellt. Leider kommt es bei der Aufgabenausführung zu erheblichen Verzögerungen. Dies führte zu einer großen Anzahl von Fehlzündungen. Wir können diese Aussetzer nicht aufholen und Live-Jobs werden nicht ausgelöst.
- Wir haben auch festgestellt, dass die Quarzverriegelung einige Zeit in Anspruch nahm (70–74 Sekunden). Meistens gilt dies für die Abfrage „SELECT * FROM QRTZ_LOCKS WHERE SCHED_NAME = ? AND LOCK_NAME = $1 FOR UPDATE“.