Dni Użytkowników Aplikacji QAD 2013 Trzebieszowice 3-4 październik Wydajność aplikacji Tomasz Porzeziński, QAD Building the Effective Enterprise
Wstęp Technologia Wyzwania Obszary analizy wydajności Narzędzia i metody Przykłady Przyszłość Building the Effective Enterprise 2
Technologia - dawniej User Interface Business Rules Business Entities Business Tasks Business Reports Client Process Structured Unstructured Data Access Building the Effective Enterprise 3
Technologia - dawniej Progress Runtime Client, Query/Results, 4GL Client Process Progress RDBMS Data Access Building the Effective Enterprise 4
Technologia dzisiaj - QRA Web Local Controller Model Presentation OLAP Data Warehouse Business Intelligence Web Service EDI IV&I Event Pub Integration Process Orchestrations BPM Workflow ESB Service Interfaces Business Rules Business Entities Business Tasks Business Reports Business Services Structured Unstructured Data Access Building the Effective Enterprise 5
Technologia - QRA MS.NET, Winforms Progress.NET Open Client Business OE Runtime Client Intelligence Presentation Integration Workflow ESB OpenEdge AppServer, WebSpeed, Runtime Tomcat Servlet Container, JSP Business Services OpenEdge RDBMS, DataServer Oracle Server MS SQL Server, XML Docs Data Access Building the Effective Enterprise 6
Technologia - QRA Presentation Business Services Data Access QAD.NET Application Shell, plug-in, QADSH MS.NET Winforms Integracja z Business Services przez Progress.NET Open Client OE Runtime Client Forms Adapters Base Library Interfaces Building the Effective Enterprise 7
Technologia - QRA Presentation Business Services Data Access Service Interface Implementacja Progress AppServer, Tomcat Obiektowy OE ABL (4GL) Dostęp do danych przez standaryzowane klasy Application business Components/services Foundation classes session, security, transaction, error, Building the Effective Enterprise 8
Technologia - OE Appserver Building the Effective Enterprise 9
QAD Application Code Wydajność aplikacji Technologia - Tomcat 23 Telnet Process 23 Telnet Process 8080 Tomcat 23 Telnet Process QAD EA.NET Maintenance Database 8005 Programs 23 Telnet Process Webapps Directory Desktop Directory Building the Effective Enterprise 10
Technologia - QRA Presentation Business Services Data Access Progress Open Edge RDBMS Progress OE Dataserver for Oracle MS SQL Server XML Persistence Layer Interface Progress Implementation Other Implementation XML Building the Effective Enterprise 11
Technologia architektura ERP Building the Effective Enterprise 12
Wyzwania Przyrost ilości przetwarzanych danych Wielozadaniowość pracy użytkowników (zakładkowe interfejsy, automatyzacja) Swoboda dostępu do danych: przeglądy, raporty, odbc Kolekcje funkcji i centra oparte na rolach w aplikacji Łatwość tworzenia łączy integracyjnych Building the Effective Enterprise 13
Wyzwania Heterogeniczna i wielozadaniowa implementacja warstwy usług biznesowych Urządzenia mobilne BMP i automatyzacja zadań Wirtualizacja Rozbudowana i wielozadaniowa warstwa prezentacji (rich client) Building the Effective Enterprise 14
Obszary analizy wydajności Kompleksowa analiza od ogółu do szczegółu System operacyjny i sprzęt procesor pamięć operacje dyskowe i sieciowe Baza danych rozkład danych zasoby motoru bazy danych, połączenia sieciowe sprawność buforowania, zapisów ilość zleceń generowanych przez procesy Building the Effective Enterprise 15
Obszary analizy wydajności Procesy warstwy usług biznesowych i API udział w wykorzystaniu procesora pamięć oczekiwania i blokady Procesy komunikacyjne procesy i wątki Tomcat, zarządzanie pamięcią brokery usług typu appserver, webspeed Identyfikacja i optymalizacja zleceń z aplikacji zlecenia, zapytania przekazywane do motoru bazy danych, Kod 4GL, SQL, dzienniki, 4GLTrace 4GL statement cache Building the Effective Enterprise 16
Obszary analizy wydajności Procesy warstwy usług biznesowych i API udział w wykorzystaniu procesora pamięć oczekiwania i blokady Procesy komunikacyjne procesy i wątki Tomcat, zarządzanie pamięcią brokery usług typu appserver, webspeed Identyfikacja i optymalizacja zleceń z aplikacji zlecenia, zapytania przekazywane do motoru bazy danych, Kod 4GL, SQL, dzienniki, 4GLTrace 4GL statement cache Building the Effective Enterprise 17
Narzędzia i metody Procesor %idle %usr %wio Pamięć operacyjna pgspace out/in process swap out/in Podsystem dyskowy %util średni czas obsługi i oczekiwania przepustowość Building the Effective Enterprise 18
Narzędzia i metody Unix/Linux sar (system activity reporter) sar u 2 10 sar o sar.out 20 1440 sar q f sar.out podstawowe miary sar sar u czas procesora sar q kolejki procesów sar w intensywność wykorzystania swap (pamięć operacyjna) sar g intensywność stronicowania (pamięć operacyjna) sar d urządzenia we/wy (podsystem dyskowy) Building the Effective Enterprise 19
Narzędzia i metody Unix/Linux vmstat - operacje na stronach pamięci, przerwania, czas procesora pomiary bieżące i kolekcjonowanie vmstat 2 100 iostat operacje we/wy Pomiary bieżące i kolekcjonowanie iostat 2 1000 iostat xn 2 1000 (Solaris) top GNU, zbiorcze przedstawienie pomiarów bieżących AIX: topas Nmon Building the Effective Enterprise 20
Narzędzia i metody pamięć Unix RES SHR: przybliżenie PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 6715 root 15 0 1084m 115m 29m S 1.3 1.9 6:46.09 D_qadfinlive_ 6025 root 15 0 467m 34m 27m S 0.3 0.6 2:18.15 _progres 6038 root 15 0 154m 19m 15m S 0.3 0.3 4:36.78 _progres 6077 root 15 0 158m 24m 15m S 0.3 0.4 6:45.72 _progres pmap: dokładna mapa pamięci Address Kbytes RSS Dirty Mode Mapping 00000000001d6000 108 96 0 r-x-- ld-2.5.so 00000000001f1000 4 4 4 r-x-- ld-2.5.so 00000000001f2000 4 4 4 rwx-- ld-2.5.so 00000000001f5000 1352 528 0 r-x-- libc-2.5.so 0000000008856000 704 256 252 rwx-- [ anon ] 00000000099ea000 143568 142940 142940 rwx-- [ anon ] Building the Effective Enterprise 21
Narzędzia i metody MS Windows perfmon pomiary bieżące, rejestrowanie Task Manager Resource Monitor Building the Effective Enterprise 22
Narzędzia i metody Bieżąca identyfikacja przeciążeń Zebranie i wstępna ocena reprezentatywny okres próbki co 10-30 sekund sar, iostat, vmstat, perfmon Wyselekcjonowanie wyników: czas procesora intensywność wykorzystania swap czas aktywnej pracy dysku Graficzna reprezentacja pomiarów i analiza Building the Effective Enterprise 23
1 26 51 76 101 126 151 176 201 226 251 276 301 326 351 376 401 426 451 476 501 526 Wydajność aplikacji Narzędzia i metody czas procesora wio < 20%, sys < 10% 90 80 70 60 50 40 30 20 10 0 usr sys wio idle Building the Effective Enterprise 24
Narzędzia i metody kolejki procesów (1,5 2) x liczba rdzeni CPU 30 run queue 25 20 15 runq 10 5 0 1 118 235 352 469 586 703 820 937 1054 1171 1288 1405 1522 1639 1756 1873 1990 2107 2224 2341 2458 2575 2692 2809 2926 3043 3160 3277 3394 3511 Building the Effective Enterprise 25
1 26 51 76 101 126 151 176 201 226 251 276 301 326 351 376 401 426 451 476 501 526 Wydajność aplikacji Narzędzia i metody kolejki procesów intensywność wykorzystania swap 18 16 14 12 10 8 6 4 2 0 swap-queue run-queue Building the Effective Enterprise 26
1 26 51 76 101 126 151 176 201 226 251 276 301 326 351 376 401 426 451 476 501 526 Wydajność aplikacji Narzędzia i metody intensywność stronicowania swap Dopuszczalne okresowo kilka na sekundę 200 180 160 140 120 100 80 60 40 20 0 page-in page-out Building the Effective Enterprise 27
1 26 51 76 101 126 151 176 201 226 251 276 301 326 351 376 401 426 451 476 501 526 Wydajność aplikacji Narzędzia i metody Podsystem dyskowy czas zajętości < 50%, uwaga wirtualizacja! wielkości kolejek, czas oczekiwania transfer 120 100 hdisk0 hdisk16 hdisk17 80 60 40 20 0 Building the Effective Enterprise 28
Narzędzia i metody - systemy SarCheck: www.sarcheck.com PerformanceToolbox (AIX) HP GlancePlus Perfgraph (Solaris, HP-UX, Linux, AIX, Windows) Nmon OpenEdge Management iotop QAD Monitoring Framework Building the Effective Enterprise 29
Narzędzia i metody sieć Network Monitor ntop Darkstat Pcap, WinPcap PortAnalyzer Microsot Message Analyzer (beta) Wireshark Building the Effective Enterprise 30
Narzędzia i metody Progress OE Promon Protop Open Edge Management VST Building the Effective Enterprise 31
Narzędzia i metody - aplikacja Identyfikacja procesów ERP top, nmon (AIX), próbka 5-10 sekund identyfikacja typu procesu i funkcji aplikacji Analiza procesów i funkcji ERP promon block access db requests (VST) Appserver log Analiza komunikacji z klientem.netui Resource Monitor Network Monitor Obiektywizacja pomiarów Building the Effective Enterprise 32
Narzędzia i metody - aplikacja Przegląd aktywnych użytkowników informacja o PID Dodatkowe polecenia systemu Przegląd aktywnych transakcji.netui client log QAD Monitoring Framework pomiary: record reads, time to read 10k rows metoda check_extended alert check_topqad Building the Effective Enterprise 33
Narzędzia i metody - aplikacja Identyfikacja zadań wsadowych równoległy odczyt VST dbrequest for each _userio where _userio-name matches "*batch": for each mon_mstr no-lock where mon qadi01 = _userio-usr: display _userio-name mon_userid mon_program FORMAT "x(10)" _UserIO-DbAccess FORMAT ">>>>>>>>>>9 _UserIO-DbRead FORMAT ">>>>>>>>>>9 _UserIO-DbWrite FORMAT ">>>>>>>>>>9". end. end. Building the Effective Enterprise 34
Narzędzia i metody - aplikacja Appserver log czas wykonania zleceń srvrlogentrytypes=asplumbing,db.connects Loglevel 3 [13/10/03@17:51:40.878-0600] P-004297 T-14838480 1 AS -- (Procedure: 'processquery com/qad/shell/interface/getbrowsedata_a.p' Line:8069) (usr=mfg) sobr009.p : Query string: for each qaddb.so_mstr where so_domain = '10USA' and so_compl_stat = "" no-lock, each qaddb.sod_det where sod_domain = so_domain and sod_nbr = so_nbr and sod_compl_stat = "" no-lock by so_mstr.so_domain by so_mstr.so_nbr Building the Effective Enterprise 35
Przykłady Nieoptymalne przeglądy domyślne uruchomienie prawidłowe filtrowanie lub przemieszczenie na koniec 2-10min 120mln rekordów.netui 2.9.1 brak możliwości przerwania pracy appservera Zadania wsadowe uruchamiane masowo w tym samym czasie dla wielu baz i domen, co 1-3 min zidentyfikowany program własny klienta 13-18mln db requests Building the Effective Enterprise 36
Przykłady EE logowanie/przełączanie workspace 2000+ zleceń dla fin appservera UsrAccess.p skumulowanie 8 użytkowników: 100% CPU Zajęte wszystkie instancje agentów, brak możliwości logowania 40+ domen Opóźnienie pracy interaktywnej w.netui Webspeed + Appserver 300ms analiza ramek sieciowych komunikacja do.netui paczkami po 8 ramek i 200ms przerwy, razem ok. 1,5sek Opóźnienie spowodowane przez wtyczkę.netui Building the Effective Enterprise 37
Dobre praktyki Wyłączenie zliczania rekordów w przeglądach Wyłączenie debug i 4GL trace Upgrade do.netui 2.9.4 timeout nieoptymalnych zapytań Analiza rozkładu danych w bazie dbanalys reindeksacja, kompaktowanie indeksów dump/load, obszary typu II Building the Effective Enterprise 38
Dobre praktyki Zadania wsadowe Szacowanie obciążenia Racjonalna automatyzacja Obiektywizacja pomiarów czas wykonania oraz ilość db requests Wydajna stacja robocza Cykliczne lub ciągłe monitorowanie Building the Effective Enterprise 39
Przyszłe wyzwania Urządzenia mobilne BPM, automatyzacja API, interfejsy Postępująca wirtualizacja Building the Effective Enterprise 40
Pytania Tomasz Porzeziński: txp@qad.com www.dsr.com.pl www.qad.com QAD Inc. 2013 Building the Effective Enterprise 41