Optymalna liczba wątków

Uruchomienie procesu w tle w wielu wątkach jest niemal zawsze szybsze niż uruchomienie go w pojedynczym wątku. Ta sztuczka określa liczbę wątków, która jest optymalna dla każdego procesu.

Uwaga: Dobrą praktyką jest przydzielenie jednego wątku do każdych dostępnych 100 MHz procesora na serwerze aplikacji. Na przykład, jeśli na serwerze aplikacji są dostępne cztery procesory pracujące z częstotliwością 450 MHz, aby rozpocząć testowanie, użytkownik może zacząć od 18 wątków: (450 * 4)/100 = 18.

To jest ogólna praktyka, ponieważ każdy proces jest inny i zależy od danych w bazie danych. Wpływ na optymalną liczbę wątków ma także konfiguracja sprzętu (np. liczba procesorów, szybkość napędów dyskowych, szybkość połączenia sieciowego między serwerem bazy danych a serwerem aplikacji). Aby określić optymalną liczbę wątków dla każdego procesu w tle, należy postępować zgodnie z tymi wskazówkami:

  • Korzystając z liczby wątków podyktowanej wyżej opisaną praktyką, należy wykonać proces w tle (zgodnie z powyższym opisem). Podczas wykonywania należy monitorować procentowe użycie serwera aplikacji, serwera bazy danych oraz ruch w sieci.

  • Jeśli użycie serwera bazy danych osiągnęło 100%, a użycie serwera aplikacji jest mniejsze, prawdopodobnie ma miejsce jedna z następujących sytuacji:

    • W procesie jest wykonywana problematyczna instrukcja SQL. Należy uruchomić śledzenie bazy danych w celu identyfikacji problemu SQL.

    • Prawdopodobnie również częstość potwierdzania jest zbyt wysoka. Częstość potwierdzania to parametr dostarczany do każdego procesu w tle. Jeśli jest zbyt wysoki, w kolejce oczekiwania bazy danych może rozpocząć się wymiana. Więcej informacji na temat tego parametru można znaleźć w sekcji Parametry dostarczane do procesów w tle.

  • Sytuacja, w której dla serwera aplikacji użycie osiągnie 100%, a dla serwera bazy danych poniżej tej wartości, nie jest niczym nadzwyczajnym. Dzieje się tak, ponieważ na ogół wszystkie procesy są powiązane z procesorem, ale nie są powiązane z urządzeniami wejścia/wyjścia. W tym momencie należy zmniejszać liczbę wątków, aż wartość użycia serwera aplikacji spadnie niewiele poniżej 100%. Wartość uzyskana w ten sposób będzie optymalną liczbą wątków wymaganą dla danego procesu w tle.

  • Jeśli dla serwera aplikacji użycie nie wynosi 100%, należy zwiększać liczbę wątków do momentu uzyskania tej wartości przez serwer aplikacji. Należy pamiętać, że serwer aplikacji powinien osiągnąć tę wartość, zanim zostanie ona osiągnięta przez serwera bazy danych. Jeśli taka sytuacja nie ma miejsca, prawdopodobnie instrukcja SQL zawiera błąd. Należy wówczas uruchomić śledzenie SQL, aby określić przyczynę.

Innym sposobem na osiągnięcie podobnych wyników jest rozpoczęcie od niewielkiej liczby wątków i zwiększanie jej w celu maksymalizacji wydajności. Definicja "wydajności" może się różnić między poszczególnymi procesami, ale można ją również uogólnić jako liczbę rekordów przetworzonych w drzewie uruchamiania zadania. Na przykład dla procesu w tle Fakturowanie w module Utilities Customer Care and Billing wydajność jest określana przez liczbę przetworzonych faktur na minutę. Jeśli użytkownik wybierze tę metodę, wówczas zalecane jest wyrysowanie krzywej wydajności względem liczby wątków. Wykres powinien przedstawiać krzywą, która w początkowej fazie jest spadzista i wyrównuje się wraz z liczbą dodanych wątków. Ostatecznie dodanie większej liczby wątków spowoduje zmniejszenie się wydajności. Dzięki tego typu analizie użytkownik może określić optymalną liczbę wątków do wykonania dla danego procesu.