2014-10-21 21 views
10

sto usando al quarzo in modalità clusterquarzo org.quartz.jobStore.selectWithLockSQL fila blocco

ho un po 'di fila contesa dei blocchi a livello DB causato dalla chiamata eccessiva:

org.quartz.jobStore.selectWithLockSQL

"SELECT * FROM WHERE QRTZ_LOCKS SCHED_NAME =:" SYS_B_0" e LOCK_NAME = 1 FOR UPDATE"

ho letto docs quarzo e non è ancora molto chiaro per me perché è al di sopra viene eseguita query.

Qual è lo scopo di avere questo blocco riga?

saluti

+2

Dai un'occhiata a https://jira.terracotta.org/jira/browse/QTZ-35. JIRA è chiuso con "non risolverà" ma ha informazioni utili – blob

risposta

3

La tabella blocchi è utilizzato da quarzo coordinamento più programmi di pianificazione quando utilizzato in modalità cluster. In un cluster solo un nodo dovrebbe attivare il trigger, quindi viene utilizzato un blocco per evitare che più nodi acquisiscano lo stesso trigger.

Dalla sezione raggruppamento della documentazione (http://quartz-scheduler.org/generated/2.2.1/html/qs-all/#page/Quartz_Scheduler_Documentation_Set%2Fre-cls_cluster_configuration.html%23):

clustering attualmente funziona solo con JDBC-Jobstore (JobStoreTX o JobStoreCMT), ed essenzialmente funziona avendo ciascun nodo del cluster quota stesso database. Il bilanciamento del carico avviene automaticamente, con ogni nodo dei lavori di attivazione del cluster il più rapidamente possibile. Quando si verifica un tempo di attivazione del trigger , il primo nodo ad acquisirlo (ponendo un blocco su di esso) è il nodo che lo attiverà.

+2

Sto avendo un problema simile. Capisco la logica dietro la query, ma non riesco nemmeno a capire perché venga eseguita così tante volte. Nel mio caso, per un lavoro che è pianificato per essere eseguito ogni 10 minuti, la query viene eseguita più di 11000 volte all'ora! Sei arrivato a qualche conclusione? –