JSF alkalmazások teljesítményhangolása JMeter és dynatrace segítségével



Hasonló dokumentumok
Agilis tesztkörnyezeti teljesítménymenedzsment

Web-fejlesztés NGM_IN002_1

Alkalmazások teljesítmény problémáinak megszűntetése

Integrációs mellékhatások és gyógymódok a felhőben. Géczy Viktor Üzletfejlesztési igazgató

Valós idejű megoldások: Realtime ODS és Database In-Memory tapasztalatok

API tervezése mobil környezetbe. gyakorlat

ESZKÖZTÁMOGATÁS A TESZTELÉSBEN

Unit Teszt. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Unit Teszt / 22

Web programoz as

NAGY TELJESÍTM. Szerzők Dévai. István Automatizálási. és s Alkalmazott Informatikai Tanszék

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Programrendszerek tanúsítása szoftverminőség mérése

MŰSZAKI TESZTTERVEZÉSI TECHNIKÁK STRUKTÚRA ALAPÚ, VAGY FEHÉRDOBOZ TECHNIKÁK TAPASZTALAT ALAPÚ TECHNIKÁK

Fogalomtár Etikus hackelés tárgyban Azonosító: S2_Fogalomtar_v1 Silent Signal Kft. Web:

Élő webes alkalmazások rendszerfelügyelete cím- és tartalomteszteléssel

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

COMET webalkalmazás fejlesztés. Tóth Ádám Jasmin Media Group

Programozási technológia II 7. előadás. Verifikáció és validáció Giachetta Roberto

Rendszermodernizációs lehetőségek a HANA-val Poszeidon. Groma István PhD SDA DMS Zrt.

WWW Kliens-szerver Alapfogalmak Technológiák Terv. Web programozás 1 / 31

Teszt terv Új funkció implementációja meglévı alkalmazásba

Automatikus infrastruktúra menedzsment és alkalmazástelepítés

Osztott rendszerek, Java EE. Általános bevezető

Weboldalak Biztonsági Kérdései

Webapp (in)security. Gyakori hibákról és azok kivédéséről fejlesztőknek és üzemeltetőknek egyaránt. Veres-Szentkirályi András

Teljesítmény Mérés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Teljesítmény Mérés / 20

Webes alkalmazások fejlesztése 10. előadás. Webszolgáltatások tesztelése (ASP.NET Core) Cserép Máté

Bevezetés Működési elv AJAX keretrendszerek AJAX

1. Bevezető. 2. Sérülékenységek

30 MB INFORMATIKAI PROJEKTELLENŐR

A Java EE 5 plattform

Miskolci Egyetem Általános Informatikai Tanszék

A tesztelés feladata. Verifikáció

webalkalmazások fejlesztése elosztott alapon

WEB PROGRAMOZÁS 3.ELŐADÁS. Űrlapok

Flex: csak rugalmasan!

A webhelyhez kötődő szoftverek architektúrája

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák

Simon Balázs Dr. Goldschmidt Balázs Dr. Kondorosi Károly. BME, Irányítástechnika és Informatika Tanszék

Vállalati eredmény és hatékonyság növelése alkalmazások teljesítményének fejlesztésével

Hogyan lesz adatbányából aranybánya?

Teljesítménymodellezés

Osztott jáva programok automatikus tesztelése. Matkó Imre BBTE, Kolozsvár Informatika szak, IV. Év 2007 január

Moodle -egy ingyenes, sokoldalú LMS rendszer használata a felsőoktatásban

kodolosuli.hu: Interaktív, programozást tanító portál BALLA TAMÁS, DR. KIRÁLY SÁNDOR NETWORKSHOP 2017, SZEGED

SzIP kompatibilis sávszélesség mérések

PHP-MySQL. Adatbázisok gyakorlat

Webszolgáltatások (WS)

Nyilvántartási Rendszer

Szoftver Tervezési Dokumentáció. Nguyen Thai Binh

Földmérési és Távérzékelési Intézet

Dinamikus terhelés hatására létrejövő deformáció mérése. Dr. Siki Zoltán Moka Dániel BME Általános- és Felsőgeodézia tanszék

C++ programozási nyelv

AJAX Framework építés. Nagy Attila Gábor Wildom Kft.

NETinv. Új generációs informatikai és kommunikációs megoldások

Mozgásvizsgálati mérések internetes megjelenítése. Zemkó Szonja - Dr. Siki Zoltán

JavaScript Web AppBuilder használata

ERserver. iseries. Az iseries Access for Windows használatának megkezdése

WebService tesztelés. SOAPui Pro, GreenPepper és Confluence használatával. Verhás & Verhás Szoftver Manufaktúra KNOW-HOW

Használati alapú és modell alapú tesztelés kombinálása szolgáltatásorientált architektúrák teszteléséhez az ipari gyakorlatban

Szolgáltatás mérés/riportolás magas fokon Egy valós megoldás Pepsi berkekben

Eseményvezérelt alkalmazások fejlesztése I 11. előadás. Szoftverek tesztelése

Közösség, projektek, IDE

Informatikai projektellenőr szerepe/feladatai Informatika / Az informatika térhódítása Függőség az információtól / informatikától Információs

Verifikáció és validáció Általános bevezető

JAVA webes alkalmazások

Webalkalmazások teljesítményvizsgálata és skálázhatósága

(Teszt)automatizálás. Bevezető

Szoftverminőségbiztosítás

Összefoglaló jelentés

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon

Alap protokollok. NetBT: NetBIOS over TCP/IP: Name, Datagram és Session szolgáltatás.

Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms

Univerzális munkafolyamat szimulátor

Podoski Péter és Zabb László

Információ és kommunikáció

SZOFTVER TESZT AUTOMATIZÁLÁS Eszter Vezdén Budapest, 08 November 2018

Virtuális Obszervatórium. Gombos Gergő

Eddig még nem használt vezérlőket is megismerünk: PlaceHolder, RadioButtonList.

A TANTÁRGY ADATLAPJA

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő PHP folytatás JDBC, ODBC

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Alapfogalmak, WWW, HTTP

PHP. Adatbázisok gyakorlat

Teljesítménymodellezés

Reaktív programozás szerver oldalon

Session-replikációs alternatívák WebLogic környezetben. Alerant Informatikai Zrt szeptember 27.

A Népszámlálás infokommunikációs háttere (Miért érdekes a Népszámlálás?) Kópházi József Központi Statisztikai Hivatal

Rendszerterv. 1. Funkcionális terv Feladat leírása:

QBE Édes Otthon lakásbiztosítás tarifáló webservice. Fejlesztői dokumentáció 1.0.2

Webmester képzés tematika oktatott modulok

Félreértések elkerülése érdekében kérdezze meg rendszergazdáját, üzemeltetőjét!

Automatikus tesztgenerálás modell ellenőrző segítségével

SOAP komponensek Delphiben

MVC desktop alkalmazás esetén. MVC Model-View-Controller. eredete: Model View Controller (MVC) elv Java EE Java alapú Web alkalmazások

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

Intervenciós röntgen berendezés teljesítményszabályozójának automatizált tesztelése

JEE tutorial. Zsíros Levente, 2012

Szoftvertechnológia 10. előadás. Verifikáció és validáció. Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Átírás:

JSF alkalmazások teljesítményhangolása JMeter és dynatrace segítségével Bakai Balázs bakaibalazs@gmail.com http://seamplex.blogspot.hu 2013. október 9.

Miről lesz szó? A JSF működése (röviden ) Terheléses tesztek készítése JSF alapú web-alkalmazásokhoz Problémák a terheléses tesztekkel Az alkalmazások gyenge pontjainak beazonosítása Nézzük meg a gyakorlatban A performancia és stabilitási problémák megelőzése A prezentáció letölthető innen http://seamplex.blogspot.hu

A JSF működése (röviden )

A JSF működése (röviden ) Inital request (HTTP GET) Az oldal kezdeti megjelenítése Postback request (HTTP POST) Tipikusan a form-ok elküldése

A JSF működése (röviden ) Minden oldalhoz eltárolódik a komponensfa: struktúrája (view tree) állapota (view state) A komponensfát a kérések során valahol tárolni kell: Kliens oldalon : Folyamatos szerializálás és deszerializálás a kérések során Szerver oldalon : Http session A postback kérésekkel továbbítani kell a view state id-t <input id="javax.faces.viewstate" name="javax.faces.viewstate" type="hidden" value="abcdefghijklmn123456" /> A JSF FWK generálja, így az értéke megváltozhat

Terheléses tesztek készítése JSF alapú web-alkalmazásokhoz

JMeter Kliens-szerver alapú alkalmazások teljesítményének mérésére használjuk Web-alkalmazások terheléses tesztelése HTTP kéréseket küld és fogad Nem hajtja végre a kliens oldali renderelést Nem futtatja le a javascript-eket Tesztelhetünk még: Web-szolgáltatásokat, FTP, LDAP és DB szervert Chartok: Vizuálisan is követhetjük a válaszidők alakulását A beépített HTTP proxy támogatása révén Automatikusan rögzíthetjük a böngészőn keresztül indított kéréseinket Így később visszajátszhatjuk Működése: Browser -> JMeter HTTP Proxy -> WebApp http://seamplex.blogspot.hu/2012/02/jmeter-webalkalmazasok-terhelesi.html

A keresési teszteset felvétele JMeter konfigurációs elemek felvétele Teszteset felvétele a HTTP Proxyval Initial request Postback request A feladat, hogy a JSF ViewState értékét szkriptelve aktualizáljuk

1. megoldás: Regular Expression Extractor JMeter Post Processor, a Regular Expression Extractor Az initial kéréshez tartozó válasz forrásából kinyerjük a viewstate id-t Eltároljuk a ${JAVAX_FACES_VIEWSTATE} változóba

1. megoldás: Regular Expression Extractor Mi lehet ezzel a probléma? JSF-re épülő keretrendszerek néha több sorba is megtörik a viewstateid átadására használt rejtett input mezőt. <input id="javax.faces.viewstate" name="javax.faces.viewstate" type="hidden" value="ace2xnoky5w3qrktutgt12ysq0gxrqomv9pcirdsuykah" /> Azonban a JMeter-es reguláris kifejezéseket nem tudunk több sorban elhelyezkedő inputra illeszteni! Mi lesz a megoldás? Használjuk az XPath Extractor Post Processor-t!

2. megoldás: XPath Extractor Post Processor

Terheléses tesztek készítése JSF alapú web-alkalmazásokhoz A postback kérésnél cseréljük le a beégetett viewstate értékét

Problémák a terheléses tesztekkel

Problémák a terheléses tesztekkel Mit hiányolunk leginkább? A kezdő oldal lassan töltődik be De mi lehet ennek az oka?

Problémák a terheléses tesztekkel A megoldás A terheléses teszt-eszközök csak rámutatnak a lassú oldalakra! Compuware dynatrace APM Nem látjuk a magas válaszidők valósi okát! A tesztelt alkalmazásba nem látunk bele! (Black Box) A hiba beazonosítás folyamata erőforrás igényes: Fejlesztés Teszt futtatása Reprodukálás Naplók finomítása Teszt futtatása Reprodukálás Naplók finomítása Többszörös teszt iteráció szükséges a gyökér okok meghatározásához Teszt futtatása Reprodukálás Probléma analizálása Probléma megoldása

Az alkalmazások gyenge pontjainak beazonosítása

Az alkalmazások gyenge pontjainak beazonosítása business end-to-end deep Java,.NET, PHP, C/C++ támogatás all transactions life-cycle Agent alapú, a használatához nem kell a forráskódot módosítani 4% alatti overhead miatt, éles környezetben is használható A hibákat nem kell reprodukálni a tesztkörnyezetben! http://seamplex.blogspot.hu/2013/08/dynatrace-te-meg-nem-hasznalod.html

Az alkalmazások gyenge pontjainak beazonosítása PurePath => kérés A kiválasztott kérés milyen alrendszereken haladt keresztül A válaszidő 97.86%-a ennél a szervernél került eltöltésre 13.37ms-ot töltött a kérés ezen a szerveren De mi vitt el 4.31s-ot a CustomerFrontend szerveren? 3 adatbázis művelet lett végrehajtva

Az alkalmazások gyenge pontjainak beazonosítása Nézzük meg a kiválasztott metódus hívási láncát 1.63sec osztálybetöltés (sync) Keletkezett egy kivétel is És itt van az egyik DB lekérdezés 2.09sec getlocalhostname() hívás

Az alkalmazások gyenge pontjainak beazonosítása Egy kiválasztott kérésnél ezek a lekérdezések futottak

Nézzük meg a gyakorlatban

Nézzük meg a gyakorlatban Egy JSF alkalmazáshoz, JMeter terheléses teszt készült! Feladat: a rendszer szűk keresztmetszeteinek a beazonosítása!

Terhelés: 10 felhasználó/perc Növekvő terhelés A kérések kiszolgálása lecsökkent A válaszidő stabil maradt A JDBC connection count elérte a maximumot (15) A GC suspension time alacsony maradt

A probléma oka: A JDBC max Connection count túl alacsony volt Növeljük meg 150-re és folytassuk a terheléses tesztelést!

Terhelés: 10 felhasználó/perc + JDBC connection count = 150 Az áteresztőképesség is megnövekedett Végül pedig megállt a szerver! De a válaszidők is megnövekedtek Megnöveltük a JDBC Connection count értékét mert a GC suspension time is megnőtt

JVM információk

A performancia és stabilitási problémák megelőzése

A performancia és stabilitási problémák megelőzése Használjunk folyamatos Integrációs eszközt (Jenkins) A tesztek automatizált futtatása + integrálva a dynatrace-szel: dinamikus jellemzők Automatizált kód-minőség ellenőrzés (SonarQube) : statikus jellemzők Napi szinten ill. release-enként lekövethetők a trendek (dinamikus és statikus jellemzők) A problémákat így hamarabb kiderülnek Ezért kevesebb erőforrás ráfordítással javíthatók!

Q&A Köszönöm a figyelmet!