2014-10-21 19 views
10

Używam Quartz w trybie klastrowymQuartz org.quartz.jobStore.selectWithLockSQL wiersz blokady

mam jakiś wiersz zamka rywalizacji na poziomie DB spowodowane nadmiernym wywołanie:

org.quartz.jobStore.selectWithLockSQL

"SELECT * FROM QRTZ_LOCKS GDZIE SCHED_NAME =" SYS_B_0" i LOCK_NAME = 1 FOR UPDATE”

czytałem dokumenty kwarc i nadal nie jest bardzo dla mnie jasne, dlaczego jest przede kwerenda jest wykonywana.

Jaki jest cel blokady tego rzędu?

Chodzi

+2

Zobacz https://jira.terracotta.org/jira/browse/QTZ-35. JIRA jest zamknięty z "nie naprawi", ale ma przydatny informaton – blob

Odpowiedz

3

Tabela zamki stosuje się kwarc koordynowania wielu szeregowania, gdy stosowane w trybie klastra. W klastrze tylko jeden węzeł powinien uruchamiać wyzwalacz, dlatego blokada jest używana w celu uniknięcia wielu węzłów uzyskujących ten sam wyzwalacz.

W sekcji grupowania dokumentacji (http://quartz-scheduler.org/generated/2.2.1/html/qs-all/#page/Quartz_Scheduler_Documentation_Set%2Fre-cls_cluster_configuration.html%23):

Klaster działa obecnie tylko z JDBC-Jobstore (JobStoreTX lub JobStoreCMT) i zasadniczo działa poprzez poszczególne węzły klastra zakładowego ta sama baza danych. Równoważenie obciążenia następuje automatycznie, przy czym każdy węzeł klastra uruchamia zadania tak szybko, jak to możliwe. Gdy wystąpi czas wyzwalania wyzwalacza , pierwszym węzłem, który go uzyska (poprzez umieszczenie na nim blokady ) jest węzeł, który go uruchomi.

+2

Mam podobny problem. Rozumiem logikę kryjącą się za zapytaniem, ale nie mogę również zrozumieć, dlaczego jest ona wykonywana tyle razy. W moim przypadku dla zadania, które ma być uruchamiane co 10 minut, zapytanie jest wykonywane ponad 11000 razy na godzinę! Czy doszliście do jakichkolwiek wniosków? –