2012-10-19 12 views
5

Moje środowisko produkcyjne uruchamiające zadanie harmonogramu java za pomocą kwarcu 2.1.4. na serwerze klastra WWW z 4 komputerami i tylko jedno zadanie harmonogramu jest uruchamiane w jednym węźle klastra (węzeł 1) zwykle przez kilka miesięcy, ale węzeł 2 nagle znajduje węzeł 1, który przejął zadanie wykonujące wczoraj w nocy. W rzeczywistości węzeł 1 bez błędu (zgodnie z serwerem, siecią, bazą danych, protokołem aplikacji), zdarzenie to spowodowało duplikowanie komunikatu utworzonego w wyniku jednoczesnego wykonywania dwóch operacji.Sposób działania kwantowego wykrywania węzłów

Jaki jest mechanizm uszkodzenia kwarcu do wykrycia węzła? Skanowanie za pomocą polecenia ping lub bicie serca za pośrednictwem transmisji UCP lub czas odpowiedzi bazy danych inny? Dowolna konfiguracja?

Przeczytałem przewodnik konfiguracji kwarcu , ale nie ma odpowiedzi.

Używam JDBCJobstore. Po sprawdzeniu szczegółów okazało się, że istnieje instrukcja bazy danych (Oracle), która ma nieprawidłowy wynik (od 5 s do 30 s). Incydent wydarzył się w tym okresie. Czy myślisz, że jest to powiązane?

moja konfiguracja jest

` org.quartz.threadPool.threadCount = 10

org.quartz.threadPool.threadPriority = 5

org.quartz.jobStore.misfireThreshold = 10000

org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX `

Ktoś ma te informacje? Dzięki.

Odpowiedz

2

Wiem, że odpowiedź jest bardzo późna, ale może ktoś taki jak my będzie nadal potrzebował.

Krótka wersja: wszystko jest obsługiwane przez DB. Ważną właściwością będzie org.quartz.jobStore.clusterCheckinInterval.

wersja Long (wszystkie kredyty przejść do http://flylib.com/books/en/2.65.1.91/1/):

Wykrywanie Failed Harmonogram węzłów

Gdy instancja Scheduler wykonuje check-in rutyny, to wygląda na sprawdzić, czy istnieją inne Instancje programu planującego, które nie zostały odprawione, gdy miały. Robi to, sprawdzając tabelę SCHEDULER_STATE i szukając harmonogramów, których wartość w kolumnie LAST_CHECK_TIME jest starsza niż właściwość org.quartz.jobStore.clusterCheckinInterval (omówiona w następnej sekcji ). Jeśli co najmniej jeden węzeł nie został zalogowany, uruchomiony program planujący zakłada, że ​​inne wystąpienia nie powiodły się.

Dodatkowo następny akapit może również być ważne:

przebiegu Węzły na oddzielnych komputerach z niezsynchronizowane zegary

Jak można ustalić teraz, jeśli uruchomić węzłów na różnych maszynach i zegary nie są zsynchronizowane, możesz uzyskać nieoczekiwane wyniki. Jest to , ponieważ znacznik czasu jest używany do informowania innych instancji ostatniego sprawdzenia węzła. Jeśli zegar tego węzła został ustawiony na przyszłość w przyszłości, działający harmonogram może nigdy nie zdać sobie sprawy, że węzeł utracił wartość . Z drugiej strony, jeśli zegar w jednym węźle zostanie ustawiony w przeszłości, węzeł może założyć, że węzeł uległ awarii i podjąć próbę przejęcia i ponownego uruchomienia jego zadań. W obu przypadkach nie jest to pożądane zachowanie. Gdy używasz różnych komputerów w klastrze (co jest normalnym przypadkiem ), zsynchronizuj zegary. Więcej informacji o tym, jak to zrobić, można znaleźć w sekcji "Książka kucharska z klastrami kwarcowymi" w dalszej części tego rozdziału.

Powiązane problemy