Strojenie kolejki wyrażeń

Mechanizm wyrażeń może wymagać strojenia na podstawie zasobów serwera, licznika wyrażeń i złożoności każdej instalacji. Zwykle proces ten obejmuje wielokrotne strojenie jednego parametru i mierzenie dla niego wydajności, aż do osiągnięcia stanu, w którym nie jest możliwa dalsza poprawa wydajności. Konieczna jest obsługa śledzenia rekordów. W przypadku zmiany sprzętu, zastosowania lub konfiguracji wymagane jest nowe strojenie.
Administrator musi sprawdzić dla każdej instalacji następującą aplikację:
Tabela 1. Ustawienie aplikacji do strojenia kolejki wyrażeń
Ustawienie Jednostka Domyślny Środowisko wykonawcze* Opis Wskazówka dotycząca strojenia
formula.queue.maxage h 24 Tak Maksymalna liczba godzin przechowywania historii kolejki wyrażeń. Czyszczone są tylko uruchomione wyrażenia. Jest to przeprowadzane z użyciem formuły. Uruchomione pozycje są pozostawiane z uwagi na statystyki wyrażeń (Zaawansowane > Kolejka wyrażeń) i sprawdzanie pętli wartościowań. Przy wartościowaniu pętli można w konfiguracjach o dużej przepustowości zmniejszyć tę liczbę, aby ograniczyć wielkość tabeli.
formula.queue.maxsize pozycje 500 000 Tak Maksymalna liczba pozycji w kolejce wyrażeń. Zadanie czyszczenia powinno utrzymywać liczbę pozycji niższą od podanej, przeprowadzając czyszczenie historii. Czyszczone są tylko uruchomione wyrażenia. To ustawienie przesłania ustawienie maxage. Z uwagi na poprawę wydajności można przeprowadzić strojenie tej wartości, tak aby ograniczyć wielkość historii kolejki w okresach wysokich obciążeń i zachować historię w pozostałych okresach. Dobrym przybliżeniem tej liczby jest wartość nieco poniżej średniej przepustowości w okresie zdefiniowanym w ustawieniu maxage.
formula.execution.batch.size pozycje 30 Tak Liczba pozycji kolejki wyrażeń przydzielonych do jednego wątku w każdym uruchomieniu przydziału. Pozycje zostają oznaczone jako rozpoczęte i wątek zostaje uruchomiony i zakończony przed przydzieleniem nowego zadania wsadowego. Wyrażenia są uruchamiane współbieżnie w kilku wątkach na kilku węzłach równocześnie, ale zawsze w kolejności chronologicznej z uwzględnieniem zależności. Jeśli dwa wyrażenia w kolejce nie są powiązane, mogą zostać uruchomione w innej kolejności niż zostały dodane. Pozycje wyrażeń mogą zależeć od wartości innej pozycji. Pozycja wyrażenia może nie zostać uruchomiona, jeśli instancja pozycji (wartość, od której jest uzależniona pozycja wyrażenia) nie zostanie uruchomiona przed wyrażeniem. Takie działanie oraz współbieżność wymagają przydzielania w celu uniknięcia kolizji, niespójnej kolejności i nadmiarowej pracy. Przydzielanie jest kosztowne, więc kilka wyrażeń jest przydzielanych jednocześnie z powyższym wymaganiem i warunkiem ich uruchomienia w podanej kolejności. Jeśli zostanie przydzielonych wiele wyrażeń, nakład pracy związany z przydziałem jest rezerwowany, ale to „blokuje” współbieżność (i odwrotnie). Ogólną zasadą jest zmniejszanie tej wartości, jeśli wyrażenia tworzą długie łańcuchy zależności, i zwiększanie w przypadku krótkich wyrażeń lub małej liczby zależności. Wartość tę można zmienić w czasie wykonywania i dlatego należy przeprowadzać jej strojenie, dopóki nie zostanie znaleziona odpowiednia wartość optymalna. Wartości mniejsze niż 10 lub większe od 200 rzadko są optymalne.
formula.cleanup.interval ms 1 800 000 Nie Częstotliwość czyszczenia kolejki wyrażeń. Wymuszane są tu ustawienia maxage i maxsize. Przeprowadzane jest jedynie czyszczenie kolejki. Pierwsza operacja czyszczenia następuje w momencie uruchamiania serwera i wtedy wykonywana jest specjalna konserwacja. Ponadto co dwa tygodnie przeprowadzane jest sprawdzenie integralności wyrażenia licznika czasu (w nocy). Większość wartości domyślnych czasu jest uzasadniona. Jeśli przepustowość jest wysoka, operacja czyszczenia trwa dłużej, ale powinna być przeprowadzana częściej (i odwrotnie). Z uwagi na to należy unikać zbytniego zwiększania tego czasu, ponieważ może prowadzić to do przestojów wykonywania i spadku wydajności, jeśli nagle obciążenie zostanie znacznie zwiększone (na przykład po imporcie lub dodaniu atrybutu).
formula.background.interval ms 10 000 Nie Częstotliwość sprawdzania w kolejce wyrażeń nowych nieprzydzielonych wyrażeń do uruchomienia. Po zakończeniu zadania wsadowego nowe sprawdzanie jest przeprowadzane natychmiast, bez oczekiwania przez zadany czas. Jeśli kolejka nie została „przetworzona” przed nadejściem następnego odstępu czasu, tworzony jest proces nowego wątku roboczego w celu podwojenia nakładu pracy. We wcześniejszych wersjach produktu Rational Focal Point wykonywanie było asynchroniczne i natychmiastowe. Gdy wyrażenie było przenoszone do bazy danych, nie było to możliwe bez ryzyka zakleszczeń. Jest to odstęp czasu, w którym w kolejce wyrażeń są sprawdzane nowe wyrażenia do uruchomienia, to jest maksymalny czas (plus czas wykonywania), przez jaki użytkownik musi czekać na uruchomienie wyrażenia. Jeśli odstęp czasu jest za krótki, operacja ta niepotrzebnie zużywa zasoby. Wpływa to również na skalowanie współbieżności: jeśli wątek roboczy uruchomiony w poprzednim odstępie czasu nie został w nim zakończony, zostaje uruchomiony również inny wątek (aż do osiągnięcia wartości thread.per.nodes). Jeśli tempo skalowania jest niskie, można obniżyć tę liczbę. Jeśli wyrażenia są rzadko używane, można ją nieco zwiększyć.
formula.max.background.threads.per.node count 2 Nie Maksymalna liczba współbieżnych wątków uruchamiających wyrażenia dla każdego węzła. Rzeczywista maksymalna liczba jest dynamicznie uzależniona od tego, czy istnieją wolne wątki w puli wątków aplikacji. Skalowanie współbieżności opisane w ustawieniu background.interval zwiększa liczbę wątków wartościowania wyrażenia w węźle w każdym odstępie czasu, jeśli jest więcej pracy do wykonania. Należy pamiętać, że to jest wartość maksymalna. Wymagane są wolne wątki w puli wątków aplikacji, a ich liczba jest automatycznie strojona z uwagi na liczbę rdzeni (wirtualnych lub rzeczywistych). Istnieje również ograniczenie nakazujące nie zużywać ostatniego wątku w puli. Użytkownik może eksperymentować z tą liczbą, ponieważ nie przerywa ona żadnej operacji. Nie jest gwarantowana lepsza wydajność, ponieważ zależy ona przede wszystkim od koniecznych do utrzymywania zdolności do współbieżności bazy danych. Jeśli w kolejce częściej znajdują się wyrażenia, które nie zostały wartościowane, oznacza to, że wartość ta jest zbyt niska.
formula.cleanup.enabled wartość boolowska true Tak Czyszczenie kolejki wyrażeń jest domyślnie włączone. Nie należy wyłączać tej operacji. Wyjątkiem są cele związane z debugowaniem lub uruchamianiem pomiarów wydajności, gdy należy wykluczyć czyszczenie. Tego ustawienia nie należy dostrajać ani zmieniać, należy zostawić wartość domyślną true.

Opinia