Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 1 Monitorowanie i badanie wydajności aplikacji biznesowych bazujących na technologii.

Podobne prezentacje


Prezentacja na temat: "Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 1 Monitorowanie i badanie wydajności aplikacji biznesowych bazujących na technologii."— Zapis prezentacji:

1 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 1 Monitorowanie i badanie wydajności aplikacji biznesowych bazujących na technologii Java EE

2 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 2 Plan prezentacji Źródło problemu Technologia Java EE Monitorowanie aplikacji Java EE Problem i cel Założenia systemu monitorowania

3 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 3 Źródło problemu System zapisów na egzaminy –Ograniczony dostęp do zasobów CK Wymogi projektowe: –JSF/Facelets –WebServices (WS) –JDBC –Zapis informacji o działaniu aplikacji do dziennika zdarzeń Problemy: –Wpływ zapisu informacji na pracę aplikacji –Powtórzenia kodu

4 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 4 Powtórzenia kodu Uzyskanie/zwolnienie połączenia bazodanowego Zwolnienie przygotowanych zapytań (ang. prepared statements) Obsługa wyjątków Zapis komunikatów do dzienników zdarzeń o: –Rozpoczęciu/zakończeniu działania metody WS –Rozpoczęciu/zakończeniu działania metod aplikacji JSF –Rzuconym wyjątku

5 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 5 Plan prezentacji Źródło problemu Technologia Java EE Monitorowanie aplikacji Java EE Problem i cel Założenia systemu monitorowania

6 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 6 Ważniejsze technologie Java EE Java EE nie jest jednolitą specyfikacją. Jest raczej zbiorem technologii, które ze sobą współpracują: –Serwlety i JSP/JSF (Kontener WEB) –Enterprise Java Beans (Kontener EJB) –JMS (Java Message Service) –Contexts and Dependency Injection (JSR 299) –JAX-WS i XML –JTA (Java Transaction API) –JPA (Java Persisence API) –JCA (Java Connector Architecture)

7 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 7 Ważniejsze technologie Java EE JEE WEBEJBJMS JAX-WS XML JPA/JTAJCA JSR 299 Contexts and Dependency Injection

8 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 8 Java EE – zarządzanie i monitorowanie Sprzęt System operacyjny JVM Serwer aplikacji Java EE Aplikacje MBeans MxBeans Java Management eXtensions

9 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 9 Java EE – zarządzanie i monitorowanie Sprzęt System operacyjny JVM Serwer aplikacji Java EE Aplikacje Logger (java.util.Logger, log4j) Narzędzie serwera aplikacyjnego Konsola administracyjna

10 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 10 Java EE – zarządzanie i monitorowanie Sprzęt System operacyjny JVM Serwer aplikacji Java EE Aplikacje Logger (java.util.Logger, log4j) Interceptory dla komponentów EJB Filtry dla serwletów ActionListener-y dla JSP/JSF Metody cyklu życia komponentów Matody cyklu życia encji Dynamiczne proxy Modyfikacja kodu binarnego AspectJ ASM

11 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 11 Źródła problemów Błędy Błędy w kodzie serwera aplikacji Błędy konfiguracji serwera aplikacji Błędy w kodzie aplikacji Błędy konfiguracji aplikacji

12 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 12 Plan prezentacji Źródło problemu Technologia Java EE Monitorowanie aplikacji Java EE Problem i cel Założenia systemu monitorowania

13 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 13 Logger Standardowy mechanizm pozwalający zapisywać komunikaty do dziennika zdarzeń Zalety: –Poziomy - ograniczenie ilości informacji –Możliwość konfiguracji, włączania i wyłączania w locie Wady: –Wymagane jest umieszczenie wywołań Logger-a w kodzie, przeważnie w kilku miejscach –Wpływa na wydajność działania aplikacji, nawet gdy jest wyłączony (test isLoggable). W przypadku konieczności zapisu dużej ilości informacji/konieczności jej wytworzenia wpływ może być nawet istotny

14 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 14 Logger – przykład public void usunTerminEgzaminu(Integer terminId) throws EgzaminyWyjatek { if (LOGGER.isLoggable(Level.FINER)) { LOGGER.entering(getClass().getName(), "usunTerminEgzaminu", terminId); }... try {... if (result == 0) { LOGGER.log(Level.SEVERE, "Nie udało się usunąć terminu egzaminu o id "); throw new EgzaminyWyjatek(NIEUDANE_USUNIECIE_TERMINU); } } catch (SQLException e) { obslugaSqlException(e); } finally { zwolnijPolaczenie(connection); } if (LOGGER.isLoggable(Level.FINER)) { LOGGER.exiting(getClass().getName(), "usunTerminEgzaminu"); }

15 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 15 JMX i MBeans Management Beans Standardowy mechanizm maszyny wirtualnej Java Instalacja MBeans podczas uruchamiania aplikacji –Razem z aplikacją –Osobno ( w przypadku kontenerów aplikacyjnych) Podobnie jak w przypadku logger-a, konieczne jest dodanie do kodu aplikacji instrukcji zapisujących informację w MBean-ach

16 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 16 JMX

17 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 17 JMX

18 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 18 JMX

19 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 19 MBean - przykład public class WsCounter implements WsCounterMBean{ private int counter=0; public int getWSCounter() { return counter; } public void incrementCounter() { counter++; } public void resetCounter() { counter=0;; }

20 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 20 MBean - przykład Uzyskaj dostęp do MBean ObjectName objectName =new ObjectName ("pl.performance:type=WsCounterMBean"); final MBeanServer platformMBeanServer = ManagementFactory.getPlatformMBeanServer(); mbean=(WsCounterMBean) MBeanServerInvocationHandler. newProxyInstance(platformMBeanServer, objectName, WsCounterMBean.class,false); Kiedy instalować MBean? Java EE 6 – inicjalizacja parametrów dla aplikacji –Synchronizacja dostępu do sesyjnych komponentów typu singleton

21 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 21 Interceptory EJB Narzędzie o największych możliwościach Pełny dostęp do komponentu poprzez refleksję: –Pola –Metody, argumenty i wartości przez nie zwracane –Wyjątki –Adnotacje –Transakcje –Wątek w którym komponent się znajduje (komponenty EJB nie mogą być współdzielone przez wątki) Implementowane poprzez: –Dynamiczne proxy (Glassfish) –Modyfikację kodu podczas ładowania (OpenEJB)

22 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 22 Interceptory EJB – przykład Mierzenie czasu wykonania metody –Tworzenie przy pomocy adnotacji pułapek informujących o zbyt długim czasie wykonywania metody Nazywanie wątków. –Domyślna nazwa nic nie mówi –Ułatwia także proces debug-owania

23 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 23 Interceptory EJB – przykład ElementType.TYPE}) Threshold {public int time();} public class BusinessComponent implements BusinessComponentRemote public String monitoredMethod(String name) public void init(){...} }

24 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 24 Interceptory EJB – przykład Interceptor public class ExecutionTime Object measureExecutionTime(InvocationContext ic) throws Exception { long startTime = System.currentTimeMillis(); Method method = ic.getMethod(); try { return ic.proceed(); } finally { Threshold threshold = method.getAnnotation(Threshold.class); long endTime = System.currentTimeMillis() - startTime; if (threshold != null && endTime > threshold.time())... }

25 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 25 EJB Lifecycle Callback Event Handlers Lifecycle callback handlers: –javax.annotation.PostConstruct –javax.annotation.PreDestroy –javax.ejb.PostActivate –javax.ejb.PrePassivate Brak możliwości bezpośredniej komunikacji pomiędzy wywołaniami metod Komunikacja przez pola komponentu EJB

26 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 26 SFSB (Stateful Session Bean) javax.ejb.SessionSynchronization Rozszerzenie cyklu dla komponentów stanowych –afterBegin –beforeCompletion/afterCompletion(true) –afterCompletion(false) Transakcji nie da się monitorować interceptorem z uwagi na to, że on sam stanowi cześć transakcji.

27 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 27 JPA Lifecycle Callback @javax.persistence.PostRemove

28 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 28 JPA Lifecycle Callback Event Handlers Nie istnieje Nowy Usunięty Zarządzany Odłączony Rozpoczęcie usuwania w DB Usunięcie w Object obj=new Object() @PreUpdate

29 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 29 Serwer aplikacji Interceptory dla WS Zależne od implementacji JAX-WS Dla JAX-WS „Metro” jest to tzw. „tubeline assembler” Typowy interceptor Tube 1Tube 2Tube 3 Żądanie/Odpowiedź SOAP Klienci WS

30 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 30 Filtry i ActionListenery Typowy public void processAction(ActionEvent arg0) throws AbortProcessingException { try {... super.processAction(arg0);... } catch (Exception e) {... LOGGER.log(Level.SEVERE, "WYJĄTEK APLIKACJI WEB", e);... }

31 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 31 Skoro jest tak dobrze, to dlaczego jest źle?

32 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 32 Problem i cel Brak jednolitego mechanizmu pozwalającego monitorować aspekty działania aplikacji biznesowej w technologii Java EE Stworzenie mechanizmu działającego z każdym typem komponentów technologii Java EE

33 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 33 Cechy poszukiwanego rozwiązania Możliwość monitorowania (nawet zdalnego) działania aplikacji Kod monitorujący nie powinien być częścią kodu logiki aplikacji –Instalacja razem z logiką aplikacji Możliwość (zdalnego) włączania/wyłączania monitorowania aplikacji, bez konieczności jej przebudowy/przeładowania Podczas budowy aplikacji kod monitorujący powinien podlegać testom !!! Określenie obiektu monitorowania

34 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 34 Rozwiązania istniejące Glassbox –Zestaw narzędziowy rozpoznający popularne framework-i –Osobna aplikacji instalowana na serwerze aplikacyjnym AspectJ JBoss AOP –Modyfikacja łańcucha interceptorów (Javassist) –Pracuje jako samodzielny kontener lub jako część JBossAS

35 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 35 Proces W działającej aplikacji pojawia się problem, np.: –Nieprawidłowe działanie –Mała wydajność –Zbyt duża zajętość zasobów –Trwale zablokowane wątki Włączany jest system monitorujący pracę aplikacji (bez jej wyłączania – wymóg biznesowy), inaczej: –Konieczność projektowania systemu pod względem zapamiętywania stanu podczas wyłączania –Klastry Analiza komunikatów Naprawienie błędów

36 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 36 Proces Nieprawidłowe działanie Mała wydajność Zbyt duża zajętość zasobów Trwale zablokowane wątki

37 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 37 Architektura Agent JMX –Ładowany podczas uruchomienia maszyny wirtualnej MBeans –Instalowane podczas instalacji aplikacji wraz z komponentami narzędziowymi Konsola JMX Komponenty narzędziowe Podsystem składowania komunikatów

38 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 38 Architektura i Projekt JVM Jednostka instalacyjna Aplikacja Narzędzia Agent JMX MBeans JMS, JDBC, Mail JMX/JConsole Serwer aplikacyjny

39 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 39 Tryb normalny pracy aplikacji JVM Jednostka instalacyjna Aplikacja Narzędzia Agent JMX MBeans JMS, JDBC, Mail JMX/JConsole Klienci

40 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 40 Włączenie monitorowania – Splatanie kodu Podczas: –Kompilacji (Compile–time) –Ładowania klas (Class loading–time) –Działania (Run–time) Uruchomienie narzędzia monitorującego powoduje wplecenie kodu narzędziowego w kod aplikacji Punkty splatania identyfikowane są poprzez adnotacje

41 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 41 Tryb monitorowania pracy aplikacji JVM Jednostka instalacyjna Aplikacja Narzędzia Agent JMX MBeans JMS, JDBC, Mail JMX/JConsole Klienci

42 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 42 Przyszłość – Java EE6 i JSR299 JBoss Seam (WebBeans) JSR Contexts and Dependency Injection –Dekoratory –Interceptory Zatarcie różnicy pomiędzy komponentem EJB a dowolnym innym bean-em zarządzanym, np. JSF Managed Beans

43 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 43 Podsumowanie Monitorowanie selektywne Możliwość „wyłączenia” kodu monitorującego podczas normalnej pracy –Szybsze działanie aplikacji –Zmniejszenie zajętości zasobów Szybsze wywołanie kodu narzędziowego od techniki interceptorów EJB3 Możliwość monitorowania dowolnego obiektu należącego do aplikacji

44 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 44 Czas na dyskusję i dziękuję za uwagę

45 Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 45 Do sprawdzenia Hierarchia ładowania klas może stanowić problem. Dynamiczne proxy do przechwytywania wywołań APM – Application Perfomance Management W przypadku klastrowanych aplikacji przeładowanie aplikacji na węźle może nastąpić bez utraty dostępu do usług (ale trzeba to zrobić na wszystkich węzłach po kolei).


Pobierz ppt "Politechnika Łódzka Instytut Informatyki, Zakład Sieci Komputerowych 1 Monitorowanie i badanie wydajności aplikacji biznesowych bazujących na technologii."

Podobne prezentacje


Reklamy Google