Przejdź do głównej zawartości

Tuning serwera Weblogic - podstawowe zalecenia

Podniesienie wydajności serwera aplikacyjnego Weblogic oraz aplikacji działających na danym serwerze Weblogic jest procesem złożonym i iteracyjnym. Na początek firma Oracle zaleca zapoznanie się z krótką listą zawierającą informacje jakie mogą okazać się przydatne dla zwiększenia wydajności działania samego serwera oraz aplikacji. 

1. Konfiguracja puli połączeń 

Ustawienie prawidłowej puli połączeń JDBC, sesji EJBs i MDBs maksymalizuje współbieżne działanie dla przewidywanej ilości wykorzystanych wątków. 
  • W przypadku serwera Weblogic w wersji 9 lub wyższej instancje serwera korzystają z własnej optymalizacji puli wątków. Najlepszą drogą drogą do określenia właściwego rozmiaru puli jest monitorowanie jej aktualnego rozmiaru rozpatrując ich najmniejszą, największą i oczekującą ilość w jednostce czasu. W tym miejscu warto zapoznać się z menadżerem wątków (Thread Management)  oraz optymalizacją "work managera" tematy te omówię innym razem. Wspomniany wcześniej tuning MDBs jest również specjalnym przypadkiem wymagającym szerszego omówienia. (Tuning Message-Driver-Beans)   
  • W wydaniach starszych poniżej wersji 9 liczba połączeń powinna być równa ilości występujących watków jakie wywoływane są przez zapytania użytkowników. Najlepszym sposobem optymalnego wykorzystania mechanizmu puli wątków jest monitorowanie ich wartości maksymalnych i minimalnych ustalając na tej podstawie najbardziej prawidłowy rozmiar  puli.
2. Wykorzystywanie przechowywanych instrukcji SQL w cache 

W przestrzeni tymczasowej przechowywane są zazwyczaj skompilowane instrukcję SQL dzięki czemu można wykorzystywać dane instrukcję i zapytania ponownie bez potrzeby wywoływania zapytań ponownie z bazy danych. W tym miejscu warto zapoznać się z zagadnieniem optymalizacji JDBC dla aplikacji. 

3. Zastosowanie optymalizacji logowania ostatnich źródeł

Gdy używamy aplikacji tranzakcyjnych baz danych rozważmy zastosowanie źródła danych JDBC w postaci zapisanych ostatnich źródeł (Logging Last Resurce - LLR) i polityk tranzakcji zamiast XA. Optymalizacja LLR może znacznie poprawić wydajność tranzakcji i bezpiecznie wyeliminować występowanie podwójnych nagłówków w bazie danych zwłaszcza w przypadku dwu - fazowego zapytania INSERT, UPDATE lub DELETE.  

4. Buforowanie połączeń oczekujących

Mamy możliwość skonfigurowania wartości określającej ilość połączeń wywołujących instancje serwera Weblogic jakie są akceptowane przed uzyskaniem odmowy w wyniku nałożonego limitu. Optymalizacja tego parametru dotyczy przede wszystkim aplikacji webowych. Parametr "Accept backlog" określa ile połączeń TCP zostanie ustawionych w kolejce oczekującej w buforze. Ten stały rozmiar kolejki jest wypełniany wraz z wywołaniem połączenia umieszczonego na stosie ale nie zaakceptowanego jeszcze przez aplikację. 

5. Dostosowanie rozmiaru "kawałka" ... konfiguracja rozmiaru pamięci dla instancji

Wspomniany w nagłówku "kawałek" oznacza jednostkę pamięci jaka rezerwowana jest dla warstwy sieciowej wykorzystywanej przez serwer Weblogic po obu stronach zarówno klienta jak i serwera, używając odczytu i zapisu danych do danego socketu. Instancja serwera otrzymuje dany kawałek z puli. Dla aplikacji może być to zbyt duża porcja danych w jednym wywołaniu, dlatego zwiększenie rozmiaru kawałka zarówno dla klienta jak i serwera może podnieść wydajność aplikacji. Zobacz zagadnienie konfigurowania parametrów "kawałka".

6. Zastosuj współbieżności optymistyczne lub w trybie odczytu

Użycie optymistycznych współbieżności występuję w relacji cache-transaction, współbieżność tylko do odczytu stosowana jest w przypadku relacji zapytanie-cache dla CMP EJBs jeżeli jest możliwe. Oba rozwiązania mogą być niezłą dźwignią dla kontenera EJB

7. Użycie lokalnych interfejsów

Zastosowanie lokalnych interfejsów lub odwołanie się do semantycznych referencji aby uniknąć obciążenia gdy jeden EJB wywołuje inny EJB przez wywołanie go w samej aplikacji JSP. Należy również pamiętać, że w wersjach wcześniejszych niż weblogic 8.1 odwołanie przez referencje jest domyślnie włączone. W wydaniach wyższych niż 8.1 odwoływanie prze referencje jest domyślnie wyłączone. W przypadku aplikacji migrowanych z niższych wersji niż 8.1 do wyższych należy pamiętać że jeżeli wykorzystują one niejawne odwołania referencyjne mogą powodować spadek wydajności.

8. Częściej używajmy buforowania relacji. 

Stosujmy wszędzie buforowanie relacji tam gdzie jest to tylko możliwe. Funkcja ta umożliwia załadowanie w całości pojedynczego kontenera EJB wykorzystując pojedyncze zapytanie SQL. Zwiększenie wydajności następuję dzięki zmniejszeniu liczby wywołań do baz danych. W tym miejscu warto poznać sposoby konfiguracji EJB.

9. Wyregulowanie sesji HTTP

Ważne jest również takie zoptymalizowanie aplikacji webowej by wykorzystywała sesje w najbardziej optymalny sposób. Dobrze jest również opracować strategię zarządzania sesją dobrany do środowiska i aplikacji.

10. Optymalne wykorzystanie mechanizmów logowania

Weblogic udostępnia dość bogaty zestaw konfiguracji mechanizmów logowania istotne jest by odpowiednio dobrać ograniczenia w zakresie rozmiarów logów oraz ich paginacji.

Powyższe informację są jedynie wstępem do obszernego zagadnienia dotyczącego optymalizacji i działania i podnoszenia wydajności serwerów z rodziny Weblogic.


Komentarze

Najczęściej czytane w tym miesiącu

50 popularnych pytań dotyczących systemu Linux zadawanych na rozmowach kwalifikacyjnych. (Pytania & Odpowiedzi)

Jak dodać użytkownika w systemie Windows z poziomu konsoli CMD? (net user, net localgroup)

Generowanie testowych plików o określonej wielkości