Arjan Topolovec PROFILIRANJE SPLETNIH APLIKACIJ Diplomsko delo Maribor, september 2010

Podobni dokumenti
Chapter 1

Protokoli v računalniškem komuniciranju TCP, IP, nivojski model, paket informacij.

Diapozitiv 1

IZGRADNJA PREDSTAVITVENE SPLETNE STRANI GLUCOWATCH Avtor: Marko Zajko Projekt delno financira Evropska unija, in sicer iz Evropskega socialnega sklada

EU-TPD 1 PODROBNOSTI KODIRANJA Informacije za trgovino JB za DCTA, (Final 1.2) Obveznost kodiranja izdelka, urejena s predpisom EU-TPD se n

Microsoft Word - M docx

1 MMK - Spletne tehnologije Vaja 5: Spletni obrazci Vaja 5 : Spletni obrazci 1. Element form Spletni obrazci so namenjeni zbiranju uporabniških podatk

RAM stroj Nataša Naglič 4. junij RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni

Microsoft Word - CNC obdelava kazalo vsebine.doc

PowerPoint Presentation

Elektronska pošta

Vprašanja za 2. izpitno enoto poklicne mature Strokovni predmet NPA Vprašanja Visual C# (4. letnik) 1. Uporabniški vmesnik razvojnega okolja Visual C#

Microsoft PowerPoint - Sequi_SecDAy.ppt

Vaja 2 Virtualizacija fizičnih strežnikov in virtualni PC A. Strežnik Vmware ESX Namestitev strežnika VMware ESX 3.5 na fizični strežnik 2. Nas

Nameščanje Adopt Open Java Development Kit 8

Aplikacija za beleženje casa

Microsoft Word - M docx

Zbornica zdravstvene in babiške nege Slovenije Zveza strokovnih društev medicinskih sester, babic in zdravstvenih tehnikov Slovenije Stanje:

PRIPOROČILA ZA OBLIKOVANJE KATALOGOV ZNANJA ZA MODULE V PROGRAMIH VIŠJEGA STROKOVNEGA IZOBRAŽEVANJA

Nove različice programske opreme GE Podjetje GE Digital, vodilni svetovni proizvajalec programske opreme za področje avtomatike, je izdalo kar nekaj n

Turingov stroj in programiranje Barbara Strniša Opis in definicija Definirajmo nekaj oznak: Σ abeceda... končna neprazna množica simbolo

Nameščanje Adopt Open Java Development Kit 8

Podatkovni model ER

Nejc Rebernjak RAZVOJ MOBILNE APLIKACIJE SHOPLY Diplomsko delo Maribor, september 2018

MATLAB programiranje MATLAB... programski jezik in programersko okolje Zakaj Matlab? tipičen proceduralni jezik enostaven za uporabo hitro učenje prir

UNIVERZA NA PRIMORSKEM

Poročilo za 1. del seminarske naloge- igrica Kača Opis igrice Kača (Snake) je klasična igrica, pogosto prednaložena na malce starejših mobilnih telefo

Diapozitiv 1

Univerza v Ljubljani Fakulteta za računalništvo in informatiko Rok Erjavec Aplikacija za upravljanje identifikatorjev in podatkov v sistemu z NFC nadz

Navodila za programsko opremo FeriX Namestitev na trdi disk Avtor navodil: Martin Terbuc Datum: December 2007 Center odprte kode Slovenije Spletna str

Analiza in primerjava spletnih storitev SOAP in protokola gRPC v okolju mikrostoritev

Presentation Name / Author

Delavnica Načrtovanje digitalnih vezij

Microsoft PowerPoint - Objekti_gradnja.ppt

Delavnica Načrtovanje digitalnih vezij

PowerPoint Presentation

Document ID / Revision : 0519/1.3 ID Issuer System (sistem izdajatelja identifikacijskih oznak) Navodila za registracijo gospodarskih subjektov

David Zakelšek SPLETNA PODPORA UČENJU MATEMATIKE Diplomsko delo Maribor, september 2013

Style Sample for C&N Word Style Sheet

Zadeva: Ponudba

Vaja 3 Kopiranje VM in namestitev aplikacij - strežnik SQL 2000 SP3a A. Lokalni strežnik Vmware ESX Dodajanje uporabnikov vajexx v skupino Vaje

Orodje za izvoz podatkov

Primerjava razvoja prave domorodne mobilne aplikacije in razvoja z uporabo ogrodja React Native

Folie 1

Izdelava spletnih aplikacij z ogrodjem Angular

VPELJAVA MDM V DRŽAVEM ZBORU MATJAŽ ZADRAVEC

UPRAVLJANJE RAZPRŠENIH PODATKOV Shranjevanje, zaščita in vzdrževanje informacij, ki jih najbolj potrebujete

PKP projekt SMART WaterNet_Opis

Macoma katalog copy

Microsoft Word - A-3-Dezelak-SLO.doc

UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Matjaž Kraševec RAZVOJ SPLETNE APLIKACIJE ZA ANALIZO UPORABNIŠKIH PROFILOV NA FACEBOOKU

Zasnova in razvoj rešitve za dinamicno odkrivanje mikrostoritev v oblacnih arhitekturah

COBISS3/Medknjižnična izposoja

Gradbeništvo kot Industrija 4.0

Event name or presentation title

TNUV Lab

Cenik ES_spremembe_marec2013_ČISTOPIS_Sprememba_

ŠTEVCI PROMETA IN NJIHOVA UPORABA ZA NAMENE STATISTIK ČRT GRAHONJA

Strojna oprema

VSEBINSKI NASLOV SEMINARSKE NALOGE

DES

ISOFT , računalniški inženiring

NEVTRIN d.o.o. Podjetje za razvoj elektronike, Podgorje 42a, 1241 Kamnik, Slovenia Telefon: Faks.: in

VS_Uroı_−antelj_1979

LAMP, MEAN, ANNE – kaj izbrati za razvoj spletne aplikacije?

Navodila za uporabo programske opreme OTRS verzija Administracijska navodila Avtor navodil: Sebastijan Šilec Datum: December 2007 Center odprte

2

UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Ivan Jovanovski TESTIRANJE ZMOGLJIVOSTI SPLETNE APLIKACIJE ORIGAMI DMS DIPLOMSKO DELO N

Style Sample for C&N Word Style Sheet

DSI 2019

PowerPoint Presentation

Šolski center Celje Srednja šola za kemijo, elektrotehniko in računalništvo ELEKTRONSKA REDOVALNICA RAZISKOVALNA NALOGA AVTORJI Aleš Budna Jure Ulaga

PowerPointova predstavitev

Obremenitveno testiranje spletnih aplikacij v javnih oblakih

Microsoft Word - CN-BTU4 Quick Guide_SI

Microsoft PowerPoint - p_TK_inzeniring_1_dan_v5_shortTS.ppt [Compatibility Mode]

Microsoft PowerPoint - OAPS1- P12.ppt

Microsoft Word - P-5_specifikacije.doc

PowerPointova predstavitev

Učinkovita izvedba algoritma Goldberg-Tarjan Teja Peklaj 26. februar Definicije Definicija 1 Naj bo (G, u, s, t) omrežje, f : E(G) R, za katero v

Vedno pod nadzorom, kjerkoli že ste

Razvoj ve\unhbox \bgroup \let \unhbox \setbox \hbox {c\global \mathchardef \spacefactor }\accent 20 c

Projektno delo

Univerza v Ljubljani Fakulteta za računalništvo in informatiko Peter Šfiligoj Analiza primernosti orodja za hiter razvoj aplikacij DIPLOMSKO DELO VISO

Diapozitiv 1

bob p. p Ljubljana Tel.: (cena klica na minuto je 1 z DDV) Posebni pogoji uporabe storitve moj bob

1. IDENTIFIKACIJA PODATKOVNEGA NIZA 1.1 Naslov Strukturno-tektonska karta Slovenije 1: Alternativni naslov Strukturno-tektonska karta Slove

PowerPointova predstavitev

II-RIS-Primer Seminarske Naloge Redni-LJ

Teorija kodiranja in kriptografija 2013/ AES

Programska sprememba oddelka šole

Najboljša skupaj Kontrola pristopa + registracija delovnega časa

Protege, I.Savnik

Miluma Trader Miluma Trader navodila: V nadaljevanju sledijo osnovna navodila, kako začeli uporabljati Miluma Trader. 1. Preverite spletno stran Ta po

Datum in kraj

UNIVERZA V MARIBORU FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO Vito Resnik RAZVOJ APLIKACIJE ZA NAROČANJE IN SPREMLJANJE MERITEV IZDELK

APS1

UNIVERZA V MARIBORU FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO Renato Mikša PROTOKOL SNMP IN NAMESTNIŠKI STREŢNIK Diplomska naloga Mari

UNIVERZA V MARIBORU FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO Milan Gabor Analiza varnostnih tveganj v mobilnih aplikacijah na platfor

Transkripcija:

Arjan Topolovec PROFILIRANJE SPLETNIH APLIKACIJ Diplomsko delo Maribor, september 2010

I Diplomsko delo univerzitetnega študijskega programa PROFILIRANJE SPLETNIH APLIKACIJ Študent: Študijski program: Mentor: Arjan Topolovec UN ŠP Računalništvo in informacijske tehnologije izr. prof. dr. Potočnik Božidar Maribor, september 2010

II

ZAHVALA Zahvaljujem se mentorju prof. dr. Božidarju Potočniku za pomoč in vodenje pri opravljanju diplomskega dela. Posebna zahvala velja staršem, ki so mi omogočili študij.

IV PROFILIRANJE SPLETNIH APLIKACIJ Ključne besede: profilirnik, profiliranje, spletna aplikacija, sledilnik, protokol, spletni vmesnik UDK: 004.5:004.777(043.2) Povzetek V tem diplomskem delu se ukvarjamo s problemom profiliranja spletnih aplikacij. Najprej smo pregledali obstoječe rešitve, ki služijo kot pomoč pri profiliranju spletnih aplikacij. Nato smo razvili lasten profilirnik, namenjen profiliranju spletnih aplikacij. Profilirnik je sestavljen iz treh delov: sledilnika, protokola in spletnega vmesnika. Sledilnik omogoča spremljanje izvajanja klicanih metod. Razvili smo ga za uporabo v ogrodju Spring MVC. Naslednji del profilirnika je dejansko protokol, ki omogoča komunikacijo med sledilnikom in spletno aplikacijo. Zadnji del našega profilirnika pa je spletni vmesnik. Ta služi za prikazovanje uporabnih informacij, ki smo jih zbrali med izvajanjem aplikacije. Profilirnik smo preizkusili na spletni aplikaciji PetClinic, ki je vzorčna aplikacija ogrodja Spring MVC. Rezultati so obetavni.

V WEB APPLICATION PROFILING Key words: profiler, profiling, web application, tracer, protocol, web interface UDK: 004.5:004.777(043.2) Abstract In this diploma thesis, we deal with web application profiling. Firstly, we reviewed existing solutions, which serve as an aid for web applications profiling. Afterwards, we develop our own profiler designed for profiling web applications. Our profiler is composed of three parts: the tracer, protocol, and web interface. The tracer enables monitoring of method execution. It was developed for use in Spring MVC framework. The next part of this profiler is actually the protocol that enables communication between the tracer and the web application. The last part of our profiler is a web interface. This interface serves for displaying useful information collected during application execution. This profiler was tested with PetClinic web application, which is a sample application of the Spring MVC framework. Results are promising.

VI KAZALO 1 UVOD 1 2 PREGLED OBSTOJEČIH REŠITEV 3 2.1 Profilirnik VisualVM............................. 3 2.2 Orodje New Relic RPM............................ 4 2.2.1 Pregled................................ 5 2.2.2 Spletne transakcije.......................... 5 2.2.3 Podatkovna baza........................... 5 2.2.4 Javanski virtualni stroji........................ 6 2.2.5 Sledi transakcij............................ 6 2.2.6 Napake................................ 6 2.2.7 Profiliranje niti............................ 6 2.2.8 Opravila v ozadju........................... 6 2.2.9 Aplikacijsko okolje.......................... 6 2.3 Orodje Spring Insight............................. 7 2.3.1 Pretekla dejavnost.......................... 7 2.3.2 Zdravje aplikacije........................... 8 3 UPORABLJENE METODE 9 3.1 Orodje AspectJ................................ 9 3.2 Standard JSON................................ 10 3.3 HTTP..................................... 10 3.3.1 Zahteva................................ 10 3.3.2 Odgovor............................... 11 3.4 Spletni servis REST.............................. 11 3.5 Spring MVC.................................. 11 4 SLEDILNIK 13

VII 4.1 Zahteva HTTP................................. 14 4.2 Klic metode.................................. 14 4.3 Krmilnik.................................... 14 4.4 Razreši pogled................................ 14 4.5 Izriši pogled.................................. 14 4.6 Izjava JDBC.................................. 15 5 PROTOKOL 16 5.1 Sled...................................... 16 5.2 Klic funkcije/metode in Krmilnik....................... 17 5.3 Poizvedba SQL................................ 18 5.4 Razreši pogled................................ 18 5.5 Izriši pogled.................................. 18 6 SPLETNI VMESNIK 20 6.1 Realno časovni pogled............................ 20 6.1.1 Časovni pregled............................ 21 6.1.2 Zahteve HTTP............................ 21 6.1.3 Podrobnosti zahteve......................... 22 6.1.4 Seznam krmilnikov.......................... 23 6.2 Podrobnosti krmilnika............................ 23 6.2.1 Osnovni podatki........................... 24 6.2.2 Odzivni čas.............................. 24 6.2.3 Zahteve na minuto.......................... 25 6.2.4 Povprečni odzivni čas........................ 25 6.3 Baza podatkov................................. 26 6.3.1 Zadnji stavki SQL.......................... 26 6.3.2 Najpočasnejši stavki SQL...................... 27 6.3.3 Povprečni čas izvajanja........................ 27

VIII 6.3.4 Seznam stavkov SQL......................... 28 7 REZULTATI IN DISKUSIJA 29 7.1 Podrobnosti implementacije......................... 29 7.2 Programska oprema.............................. 29 7.3 Priprava profilirnika za uporabo....................... 29 7.4 Delovanje aplikacije............................. 30 8 ZAKLJUČEK 34

IX KAZALO SLIK 2.1 Profilirnik VisualVM.............................. 3 2.2 Orodje New Relic RPM............................ 4 2.3 Orodje Spring Insight............................. 7 3.1 Delovanje ogrodja Spring MVC........................ 12 4.1 Delovanja sledilnika.............................. 13 6.1 Spletni vmesnik: Realno časovni pogled.................... 20 6.2 Realno časovni pogled spletnega vmesnika: časovni pregled......... 21 6.3 Realno časovni pogled spletnega vmesnika: seznam zahtev HTTP..... 22 6.4 Realno časovni pogled spletnega vmesnika: podrobnosti zahteve....... 22 6.5 Realno časovni pogled spletnega vmesnika: seznam krmilnikov....... 23 6.6 Spletni vmesnik: podrobnosti krmilnika.................... 23 6.7 Pogled podrobnosti krmilnika: osnovni podatki................ 24 6.8 Pogled podrobnosti krmilnika: odzivni čas.................. 25 6.9 Pogled podrobnosti krmilnika: zahteve na minuto............... 25 6.10 Pogled podrobnosti krmilnika: povprečni odzivni čas............. 25 6.11 Spletni vmesnik: baza podatkov........................ 26 6.12 Pogled baza podatkov: zadnji stavki SQL................... 27 6.13 Pogled baza podatkov: najpočasnejši stavki SQL............... 27 6.14 Pogled baza podatkov: povprečni čas izvajanja................ 28 6.15 Pogled baza podatkov: seznam stavkov SQL................. 28 7.1 Delovanje aplikacije: realno časovni pogled po izvajanju zahtev....... 31 7.2 Delovanje aplikacije: pogled podrobnosti krmilnika po izvajanju zahtev... 32 7.3 Delovanje aplikacije: pogled baza podatkov po izvajanju zahtev....... 33

X UPORABLJENJE KRATICE GC HTTP JSON MIME MVC REST RPM SQL URI Čiščenje pomnilnika (angl. Garbage Collection) Protokol svetovnega spleta (angl. Hypertext Transfer Protocol) Oblika serializacije (angl. JavaScript Object Notation) Tip vsebine (angl. Multipurpose Internet Mail Extensions) Programski vzorec model-pogled-krmilnik (angl. Model View Controller) Oblika spletnega servisa (angl. Representational State Transfer) Zahteve na minuto (angl. Requests Per Minute) Jezik za dostop do relacijskih podatkovnih baz (angl. Structured Query Language) Lokacija vira (angl. Uniform Resource Identifier)

Profiliranje spletnih aplikacij Stran 1 1 UVOD Profiliranje je oblika dinamične analize programov. Omogoča vpogled v obnašanje programa na osnovi podatkov, ki jih zbere profilirnik. Pri razvoju programske opreme igra profiliranje veliko vlogo, in sicer vse od začetkov profilirnikov v sedemdesetih letih prejšnjega tisočletja. Prve korake je naredil IBM, sledili pa so simulatorji ukaznega nabora (angl. instruction set simulators), s katerimi je bilo mogoče spremljati zmogljivost celotnega klicnega drevesa. Najbolj pogosti sta dve obliki profiliranja: analiza zmogljivosti in analiza porabe pomnilnika. Pri analizi zmogljivosti nas zanima predvsem čas izvajanja posamezne funkcije. S tem omogočimo iskanje delov programa, ki potrebujejo optimizacijo. Analiza porabe pomnilnika vrne informacije o količini pomnilnika, ki ga je določena funkcija rezervirala. Na osnovi pridobljenih informacij lahko ustvarimo detajlen profil aplikacije, s katerim si pomagamo pri nadaljnem razvoju in optimizaciji delov kode s slabo zmogljivostjo. Končni rezultat profiliranja je, da se izognemo prezgodnji optimizaciji (angl. premature optimization), ki je pri razvoju programske opreme še vedno pogost pojav. Z množičnim pojavom spletnih aplikacij so se spremenile tudi zahteve, kaj naj profilirnik omogoča. Razvijalcu je potrebno ponuditi jasen in preprost vpogled v posamezne zahteve HTTP, in sicer od generiranja zahteve, izvajanja te zahteve in končnega odgovora aplikacije. S porastom ogrodij za razvoj aplikacij pa je potrebno razvijalcu omogočiti tudi ogled profila in to le tistega dela aplikacije, ki ga še posebej zanima. Ponavadi je to kar del kode, ki ga razvija sam. Razvijalca, ki uporablja določeno ogrodje kot pomoč pri razvoju spletne aplikacije, torej ne zanima podroben vpogled v profil celotnega ogrodja, saj ga optimizacija delov kode, ki jih ne more spreminjati, oziroma na njihov razvoj nima vpliva, niti ne zanima. Za dosego tega cilja moramo iz profila izpustiti vse klice funkcij, ki spadajo k posameznemu ogrodju. Te klice prikažemo razvijalcu kot lahko razumljive enote, in sicer vrnemo informacijo, da se je določena akcija v ogrodju zgodila, podrobnosti o strukturi klicev funkcij pa skrijemo. Na koncu si oglejmo še strukturo tega diplomskega dela. V drugem poglavju si ogledamo obstoječe rešitve za profiliranje. Najprej predstavimo profilirnik VisualVM [7], ki je

Profiliranje spletnih aplikacij Stran 2 splošni profilirnik za profiliranje spletnih aplikacij, zatem pa se srečamo še z orodjem New Relic RPM [3], ki je pravzaprav kombinacija med profilirnikom in orodjem za spremljanje delovanja aplikacije. Orodje je uporabno tako v produkcijskem okolju, kot tudi v času razvoja. Na koncu še predstavimo Spring Insight [5], ki je orodje za pomoč pri razvoju aplikacij z ogrodjem Spring. V tretjem poglavju predstavimo metode, ki smo jih potrebovali pri praktičnem delu diplomske naloge. Ob tem podamo še kratek opis uporabljenih metod dela. V četrtem poglavju opišemo sledilnik, ki je prvi del našega profilirnika. Predstavmo delovanje sledilnika, opišemo pa tudi katere dogodke v izvajanju aplikacije beležimo. Drugi del profilirnika opišemo v naslednjem poglavju. To je dejansko protokol, ki omogoča komunikacijo med sledilnikom in spletno aplikacijo. V šestem poglavju opišemo spletno aplikacijo, ki je zadnji del našega profilirnika. Spletna aplikacija služi prikazu uporabnih informacij, ki smo jih zbrali med izvajanjem aplikacije. Nato predstavimo še rezultate in delovanje našega razvitega profilirnika. Delo pa zaključimo s kratkim sklepom v osmem poglavju. Na koncu je navedena še literatura, ki smo jo uporabili kot pomoč pri izdelavi diplomske naloge.

Profiliranje spletnih aplikacij Stran 3 2 PREGLED OBSTOJEČIH REŠITEV 2.1 Profilirnik VisualVM Slika 2.1: Profilirnik VisualVM. Je profilirnik, ki je priložen Oracle JDK in OpenJDK. Ta profilirnik omogoča profiliranje porabe procesorskega časa in/ali porabe pomnilnika. To orodje ni specializirano za profiliranje spletnih aplikacij, saj je namenjeno splošnemu profiliranju. Kot rezultat zato dobimo podatke za veliko odvečnih metod, ki nas ne zanimajo. Slednje lahko rešimo na naslednje načine: s pomočjo filtriranja metod, z določanjem imenskega prostora ali z izločanjem imenskih prostorov. Filtriranje metod omogoča prikaz le metod s predpisanim imenom. S tem zožimo nabor prikazanih metod ter dobimo boljši vpogled v rezultate. Določanje imenskega prostora pa

Profiliranje spletnih aplikacij Stran 4 opredeljuje prostor (obseg), katerega bomo profilirali. Gre za določitev korena v drevesni strukturi, od katerega dalje bomo profilirali. Izločanje imenskih prostorov pa omogoča, da ne profiliramo izbranih imenskih prostorov. 2.2 Orodje New Relic RPM Slika 2.2: Orodje New Relic RPM. Je orodje namenjeno spremljanju delovanja aplikacije v produkcijskem okolju. Nudi veliko funkcionalnosti, ki omogočajo vpogled v delovanje aplikacije. Možno je celo identificirati napake med izvajanjem aplikacije. Orodje je namenjeno aplikacijam Java in Ruby. Primerno je tudi za testiranje stabilnosti aplikacije med obremenitvenim testom. Orodje je razdeljeno v naslednje poglede: 1. Pregled 2. Spletne transakcije 3. Podatkovna baza 4. Javanski virtualni stroji

Profiliranje spletnih aplikacij Stran 5 5. Sledi transakcij 6. Napake 7. Profiliranje niti 8. Opravila v ozadju 9. Aplikacijsko okolje Posamezne poglede bomo opisali v nadaljevanju. 2.2.1 Pregled Združuje uporabne informacije iz več drugih pogledov. Nudi grafičen vpogled v povprečni odzivni čas, oceno apdex in prepustnost aplikacije. Ocena apdex (angl. application performance index) je odprt standard, ki se uporablja za predstavitev zmogljivosti programske opreme. 2.2.2 Spletne transakcije Omogoča vpogled v dostope do posameznih strani. Za vsako stran lahko dobimo množico informacij kot so: ocena apdex število zahtev, povprečen, najmanjši, največji in skupen odzivni čas, ter skupen čas, potreben za prikaz strani. 2.2.3 Podatkovna baza Prikazuje stavke SQL, ki so bili izvedeni med delovanjem profilirane aplikacije. Seznam stavkov SQL lahko uredimo po različnih kriterijih (npr. najboljša prepustnost, največ porabljenega časa). Grafično sta prikazani prepustnost ter odzivni čas podatkovne baze.

Profiliranje spletnih aplikacij Stran 6 2.2.4 Javanski virtualni stroji Vsebuje informacije o javanskih virtualnih strojih, na katerih teče aplikacija. Grafično so prikazane informacije o: 1. porabi pomnilnika, 2. porabi CPE, in 3. dejavnosti GC (angl. Garbage Collection). 2.2.5 Sledi transakcij Prikažejo se informacije o zadnji izvedeni transakciji, kdaj se je transakcija začela ter čas izvajanja. 2.2.6 Napake Gre za seznam zadnjih izjem, sproženih med prikazom strani. Omogoča vpogled v odstotek napak za prikaze srani skozi čas. 2.2.7 Profiliranje niti Omogoča zbiranje profila v določenem časovnem obdobju. Tako zbran profil je primeren za analizo tipa, kje naša koda porabi največ časa za izvajanje, ter kje porabi največ CPE. 2.2.8 Opravila v ozadju Prikazuje izvajanje opravil v ozadju. število izvajanj skozi čas. Grafično sta prikazani povprečni čas izvajanja ter 2.2.9 Aplikacijsko okolje Prikazuje informacije o spletnem strežniku, verzijah programske opreme ter o nastavitvah okolja.

Profiliranje spletnih aplikacij Stran 7 2.3 Orodje Spring Insight Slika 2.3: Orodje Spring Insight. Spring Insight je orodje za pomoč pri razvoju aplikacij z ogrodjem Spring. Orodje, tako kot ogrodje Spring, razvija SpringSource. Spring Insight je del spletnega strežnika SpringSource tc Server Developer Edition. To orodje omogoča vpogled v profil izvajanja zahtev HTTP, kakor tudi procesov v ozadju (Spring Batch). Sestavljata ga dva pogleda. Prvi je»pretekla dejavnost«, kjer dobimo vpogled v pretekle sledi, ki jih je orodje zbralo. Drug pogled pa je»zdravje aplikacije«, kjer so zbrane osnovne informacije o odzivnosti aplikacije. 2.3.1 Pretekla dejavnost Ta pogled je razdeljen v tri dele: stolpični grafični prikaz, seznam sledi, in podroben prikaz sledi.

Profiliranje spletnih aplikacij Stran 8 Stolpični grafični prikaz kaže seštevek trajanja vseh sledi za določeno časovno obdobje. Omogoča hiter vpogled v število sledi in zadnje sledi iz izbranega časovnega obdobja. Ob izbiri stolpca v grafu se odpre še seznam sledi. V tem seznamu so vse sledi, ki so se zgodile v izbranem časovnem obdobju. Tabela prikazuje naslednje informacije: trajanje izvajanja sledi, čas začetka izvajanja sledi, in oznako sledi. Če želimo podroben prikaz izvajanja sledi, le-tega izberemo v seznamu sledi. Odpre se drevesni prikaz celotne sledi. Grafično je prikazan čas izvajanja vsake sledi in kdaj se je ta sled začela izvajati. V drevesu so za izbrano sled na voljo tudi dodatne informacije o sledi (npr. glava HTTP, vrnjena vrednost funkcije). 2.3.2 Zdravje aplikacije Ta pogled nudi osnovne informacije o odzivnih časih krmilnikov profilirane aplikacije v določenem časovnem obdobju. Dobimo hiter vpogled v morebitna odstopanja odzivnih časov. Za vsak krmilnik (angl. controller) so zbrani naslednji podatki: zdravje (zeleno - dobro, rdeče - slabo), ime krmilnika, število zahtev za krmilnik, in povprečen odzivni čas. Podrobnejši prikaz za vsak krmilnik pa daje še informacije o odzivnih časih skozi izbrano časovno obdobje, ter o porazdeljenost zahtev po odzivnih časih.

Profiliranje spletnih aplikacij Stran 9 3 UPORABLJENE METODE V sklopu tega poglavja bomo predstavili metode, ki smo jih potrebovali za implementacijo našega profilirnika. Orodje AspectJ smo uporabili za prestrezanje klicev metod v profilirani aplikaciji. Za komunikacijo med sledilnikom in spletno aplikacijo smo uporabili format JSON in protokol HTTP. Spletni servis REST smo uporabili kot vstopno točko zbranih podatkov sledilnika v spletno aplikacijo. Spletni vmesnik profilirnika pa smo razvili s pomočjo ogrodja Spring MVC. 3.1 Orodje AspectJ AspectJ [6][4] je razširitev za programski jezik Java, ki omogoča aspektno usmerjeno programiranje. Razvija se pod okriljem fundacije Eclipse. Je najbolj razširjeno in najmočnejše orodje za aspektno usmerjeno programiranje. Aspektno usmerjeno programiranje sestoji iz naslednjih konstruktov: aspect), pointcut ter predlog (angl. advice). Opišimo vsakega od njih: aspekt (angl. aspekt: Je za aspektno programiranje to kar je razred za objektno usmerjeno programiranje. Lahko vsebuje več predlogov. pointcut : Omogoča izbiro točk izvajanja, kjer se bo določen predlog izvedel. Točka izvajanja je lahko klic metode, dostop do razrednih spremenljivk, inicializacija razreda ipd. predlog: Je enakovreden metodi v objektnem programiranju, s to razliko, da predlogu določimo pointcut, ob katerem se bo telo predloga izvedlo. AspectJ omogoča enostavno dodajanje funkcionalnosti pred, po ali okoli posameznih točk izvajanja. Funkcionalnosti se v obstoječe razrede dodajajo na dva načina, in sicer v: času prevajanja in času nalaganja razredov.

Profiliranje spletnih aplikacij Stran 10 V času prevajanja je omogočeno dodajanje funkcionalnosti s posebnim prevajalnikom. Ta način omogoča dodajanje funkcionalnosti samo v razrede, za katere imamo dostop do izvorne kode. Za nas bolj zanimivo je dodajanje funkcionalnosti v času izvajanja oz. ob nalaganju razredov. Slednje je implementirano kot agent za javanski virtualni stroj. Ta prestreže nalaganje razredov, poišče ustrezne pointcut -e ter jim doda funkcionalnosti, določene v predlogu. 3.2 Standard JSON JSON (angl. JavaScript Object Notation) je preprost standard, izpeljan iz dela programskega jezika JavaScript. Pogosto je uporabljen za serializacijo komunikacije med klientom in strežnikom. Je alternativa formatu XML, saj omogoča bolj kompaktno predstavitev. JSON je dobro podprt v programskih jezikih, nudi serializacijo neodvisno od platforme in programskega jezika. 3.3 HTTP HTTP (angl. Hypertext Transfer Protocol) je temeljni mrežni protokol svetovnega spleta. Deluje na principu»zahteva-odgovor«, pri čemer klient pošlje zahtevo, strežnik pa vrne odgovor na to zahtevo. 3.3.1 Zahteva Zgradba zahteve HTTP je naslednja: [ metoda ] [ URI ] HTTP / [ v e r z i j a ] ( 1 ) [ g l a v a ] : [ v r e d n o s t ] ( 2 )... ( 3 ) [ t e l o z a h t e v e ] ( 4 ) 1. metoda: katero akcijo želimo izvesti nad določenim URI-jem URI: naslov vira, kateremu je zahteva namenjena verzija: verzija protokola HTTP 2. glava: vrednost, katero bomo nastavljali vrednost: dejanska vrednost glave 3. prazna vrstica

Profiliranje spletnih aplikacij Stran 11 4. telo zahteve: tip vsebine je določen z glavo»content-type«. 3.3.2 Odgovor Zgradba odgovora HTTP pa je naslednja: HTTP / [ v e r z i j a ] [ s t a t u s ] ( 1 ) [ g l a v a ] : [ v r e d n o s t ] ( 2 )... ( 3 ) [ t e l o odgovora ] ( 4 ) 1. verzija: verzija protokola HTTP status: status obdelave zahteve 2. glava: vrednost, katero bomo nastavljali vrednost: dejanska vrednost glave 3. prazna vrstica 4. telo odgovora: tip vsebine je določen z glavo»content-type«. 3.4 Spletni servis REST Je oblika spetnega servisa, zgrajenega na načelih protokola HTTP. Standard je zgrajen nad URI-ji (ki predstavljajo vire), nad temi viri pa lahko izvajamo metode HTTP, telo zahteve/odgovora je določeno s tipom MIME. 3.5 Spring MVC Spring MVC [1][2] je del ogrodja Spring in je namenjen za enostaven razvoj aplikacij MVC. Zasnovan je z močno integracijo ostalih komponent ogrodja Spring. Vse zahteve prejme glavni krmilnik, ta pa jih usmeri h krmilniku, ki ustreza obravnavani zahtevi HTTP. Glavni krmilnik skrbi tudi za razreševanje pogleda ter ustvarjanje prikaza iz modela in predloge. Slika 3.1 prikazuje delovanje ogrodja Spring MVC.

Profiliranje spletnih aplikacij Stran 12 Slika 3.1: Delovanje ogrodja Spring MVC. Akcija se izvede v šestih korakih: 1. zahteva HTTP; 2. poišče se pravilen krmilnik, na njem pa se izvede ustrezna metoda; 3. krmilnik obravnava zahtevo, ustvari model s podatki za prikaz pogleda; 4. krmilnik vrne model glavnemu krmilniku; 5. iz predloge in modela se ustvari prikaz; 6. ustvarjen prikaz se vrne kot odgovor HTTP.

Profiliranje spletnih aplikacij Stran 13 4 SLEDILNIK Sledilnik omogoča spremljanje izvajanja klicanih metod. Implementirali smo sledilnik za ogrodje Spring MVC. Za sledenje klicev metod smo uporabili orodje AspectJ, ki omogoča dodajanje funkcionalnosti k obstoječim klicem metod. AspectJ smo izbrali zato, ker omogoča razvoj v programskem jeziku Java, hkrati pa nudi zmogljiv jezik za izbiro metod, ki jim bomo sledili. Sledilnik smo implementirali v dveh delih. Prvi del je glavni sledilnik, ki se izvede ob vsaki zahtevi HTTP. Glavni sledilnik je zadolžen za zbiranje sledi ostalih sledilnikov. Ob koncu zahteve se zbrane sledi pošljejo profilirniku. Drugi del so sledilniki, ki zbirajo informacije o dogajanju v ogrodju. Ob izvedbi akcije v ogrodju, za katero je namenjen določen sledilnik, se zberejo potrebne informacije iz konteksta izvedene akcije. Te informacije tvorijo sled. Delovanje sledilnika prikazuje slika 4.1. Slika 4.1: Delovanja sledilnika. Implementirali smo sledenje za naslednje dogodke v ogrodju:

Profiliranje spletnih aplikacij Stran 14 1. zahteva HTTP, 2. klic metode, 3. krmilnik, 4. izjava JDBC, 5. razreši pogled, in 6. izriši pogled. 4.1 Zahteva HTTP V razredu DispatcherServlet prestrežemo klic metode doservice. Ta metoda se izvede ob vsaki zahtevi HTTP v ogrodje Spring MVC. Preko argumentov lahko dobimo podatke o zahtevi (HttpServletRequest) ter odgovoru HTTP (HttpServletResponse). 4.2 Klic metode Kot klic metode izberemo vse metode, ki so del razredov označenih z oznako Service, Repository ali Component. S tem zajamemo večino razredov napisanih s strani razvijalca. To omogoča hitro določitev ozkega grla v posamezni aplikacijski plasti. 4.3 Krmilnik Kot krmilnik izberemo vse metode, ki so del razreda z oznako Controller in imajo oznako RequestMapping. 4.4 Razreši pogled V razredu ViewResolver prestrežemo metodo resolveviewname. S tem pridobimo ime pogleda, ki ga vrne krmilnik, in lokalizacijo, ki se bo uporabila za prikaz pogleda. 4.5 Izriši pogled V razredu View prestrežemo metodo render. S tem pridobimo model oz. podatke, ki se bodo uporabili od prikazu pogleda.

Profiliranje spletnih aplikacij Stran 15 4.6 Izjava JDBC Java nudi več razredov za klicanje metod SQL. Zato moramo prestreči vse klice, če želimo dobiti vse izvedene stavke SQL. V razredu Statement prestrežemo klic vseh metod, ki se začnejo z besedo execute, kot prvi argument pa prejmejo stavek SQL. Stvari smo se morali lotiti na drugačen način, da bi pridobili stavek SQL in dolžino izvajanja v razredu PreparedStatement. V razredu Connection smo zato prestregli klic metode preparestatement. S tem smo pridobili stavek SQL. Metoda vrača razred PreparedStatement, ki ga shranimo za pozneje. Nato moramo pridobiti še informacije o dolžini izvajanja. To smo storili tako, da smo prestregli klic metod, ki se začnejo z besedo execute. Stavek SQL smo pridobili iz prej pridobljenih instanc razreda PreparedStatement. Tako smo dobili celotno sled, ki jo lahko pošljemo profilirniku.

Profiliranje spletnih aplikacij Stran 16 5 PROTOKOL Za zasnovo protokola našega profilirnika smo izbrali protokol HTTP ter format serializacije JSON. Protokol HTTP smo izbrali zaradi dobre podpore v standardnih knjižnjicah programskih jezikov za ta protokol. To omogoča lažjo implementacijo sledilnikov v različnih programskih jezikih. Format JSON pa smo izbrali zato, ker omogoča kompaktno serializacijo, hkrati pa je dobro podprt v programskih jezikih. V nadaljevanju natančno opisujemo naš uporabljen protokol. 5.1 Sled Predstavlja abstraktno sled profilirnika. profilirniku. Zgradba sledi je naslednja: Polja morajo vsebovati vse sledi, ki so poslane { } i d : [ s t e v i l o ], p a r e n t : [ s l e d ], time : [ s t e v i l o ], t r a c e D e p t h : [ s t e v i l o ], c h i l d r e n : [ p o l j e s l e d i ], e x e c u t i o n T i m e : [ s t e v i l o ], t y p e : [ t i p ] Pojasnimo posamezno polje: Identifikacijsko število (id): Število predstavlja unikatno število, s katerim identificiramo posamezno sled. število določi profilirnik. Če je število vnaprej nastavljeno, se ignorira. To Starš (parent): Je sled, ki je direkten starš trenutne sledi. Starš je sprožitelj dogodkov, ki ustvarijo novo sled. Trenutni čas (time): Je čas v milisekundah pretečen od 00:00:00 UTC, 1 januarja 1970.

Profiliranje spletnih aplikacij Stran 17 Globina sledi (tracedepth): Predstavlja globino klicnega drevesa sledi, pri čemer začnemo šteti z globino 0. Starš trenutne sledi ima globino vedno za 1 manjšo od trenutne. Otroci (children): Sledi, ki so nastale kot posledica dogodkov znotraj telesa trenutne sledi. Čas izvajanja (executiontime): Čas izvajanja sledi v milisekundah. V čas izvajanja so všteti tudi časi izvajanja sledi pod globino trenutne sledi. Tip sledi (type): Tip sledi profilirniku definira, katere informacije ob osnovnih, sled še vsebuje, ter kako mora sled prikazati v grafičnem vmesniku. 5.2 Klic funkcije/metode in Krmilnik Predstavljamo protokol za klic funkcije ali krmilnika. Struktura se razlikuje samo v tipu (polje type). Klic funkcije ima tip METHOD, klic krmilnika pa CONTROLLER. Zgradba strukture je naslednja: { } classname : [ n i z ], methodname : [ n i z ], r e t u r n T y p e : [ n i z ], r e t u r n V a l u e : [ n i z ], p a r a m e t e r T y p e s : [ p o l j e n i z o v ] Pojasnimo posamezno polje: Ime razreda (classname): Ime razreda, v katerem se klicana metoda nahaja. Ime lahko vsebuje tudi imenski prostor, pri čemer je ločilni znak pika (.). Če programski jezik ne vsebuje razredov, naj vrednost vsebuje samo ime imenskega prostora. Ime metode/funkcije (methodname): Polno ime klicane metode ali funkcije.

Profiliranje spletnih aplikacij Stran 18 Vrnjen tip (returntype): Ime tipa, ki ga funkcija vrača. Lahko vsebuje tudi imenski prostor, pri čemer je ločilni znak pika (.). Če vrnjenega tipa ni mogoče določiti, naj bo vrednost prazen niz; 5.3 Poizvedba SQL Predstavlja izveden stavek SQL. Tip sledi je SQL: { } query : [ n i z ] Pojasnimo posamezno polje: SQL poizvedba (query): Poizvedba v podatkovno bazo. 5.4 Razreši pogled Predstavlja ime pogleda in lokalizacijo pogleda, ki sta razrešena v predlogo za prikaz. Tip sledi je RESOLVE_VIEW: { } viewname : [ n i z ], l o c a l e : [ n i z ] Pojasnimo posamezno polje: Ime pogleda (viewname): Ime pogleda ki se uporablja za iskanje implementacije pogleda s tem imenom. Jezik (locale): Kakšna lokalizacija bo uporabljena pri prikazu pogleda. 5.5 Izriši pogled Predstavlja razrešen tip pogleda, tip vsebine in podatke za izris pogleda. RENDER_VIEW: Tip sledi je

Profiliranje spletnih aplikacij Stran 19 { } classname : [ n i z ], c o n t e n t T y p e : [ n i z ], model : [ s l o v a r ] Pojasnimo posamezno polje: Ime razreda (classname): Ime razreda, ki predstavlja pogled. Polje je neobvezno. Tip vsebine (contenttype): Tip vsebine MIME, ki bo prikazana. Vrednosti (model): Vrednosti uporabljene pri prikazu pogleda. Če vrednosti ni, naj bo vrednost prazen slovar.

Profiliranje spletnih aplikacij Stran 20 6 SPLETNI VMESNIK Zadnji del našega implementiranega profilirnika je spletni vmesnik. Ta omogoča vpogled v zbrane sledi. Razvili smo ga s pomočjo ogrodja Spring MVC. Za risanje grafov smo razvili lastno knjižnico. Za lažje delo z grafičnim formatom SVG smo si pomagali s knjižnjico jquery SVG. Naš vmesnik je sestavljen iz naslednjih treh pogledov: 1. realnočasovni pogled, 2. podrobnosti krmilnika, in 3. baza podatkov. Vmesnik prikazuje najbolj uporabne informacije, ki bi razvijalca spletnih aplikacij lahko zanimale. V nadaljevanju si bomo vse poglede pogledali bolj natančno. 6.1 Realno časovni pogled Slika 6.1 prikazuje izgled realno časovnega pogleda. Slika 6.1: Spletni vmesnik: Realno časovni pogled.

Profiliranje spletnih aplikacij Stran 21 Ta pogled omogoča spremljanje izvajanja zahtev. V okviru tega pogleda so zbrane štiri skupine informacij, in sicer: 1. Časovni pregled 2. Zahteve HTTP 3. Podrobnosti zahteve 4. Seznam krmilnikov 6.1.1 Časovni pregled Prvi del časovnega pregleda (glej sliko 6.2) predstavlja pogosto osvežen graf. Slika 6.2: Realno časovni pogled spletnega vmesnika: časovni pregled. Graf prikazuje naslednje informacije: čas, ki ga je aplikacija porabila pri poizvedbah SQL in čas, ki ga je aplikacija porabila za izvajanje programske kode. To omogoča, da lahko takoj opazimo odstopanja od povprečnega trajanja poizvedb SQL, zapazimo pa lahko tudi spremembe v odzivnem času aplikacije ipd. 6.1.2 Zahteve HTTP Če na prikazanem grafu izberemo časovno rezino, ki nas podrobneje zanima, se prikaže podroben pogled vseh zahtev (glej sliko 6.3) in seznam zahtev, združenih po krmilnikih.

Profiliranje spletnih aplikacij Stran 22 Slika 6.3: Realno časovni pogled spletnega vmesnika: seznam zahtev HTTP Seznam zahtev prikazuje vse zahteve, ki so se začele izvajati v tisti časovni rezini. Za vsako zahtevo dobimo naslednje informacije: celoten čas trajanja zahteve, čas, kdaj je bila zahteva prejeta in naslov URI ter metoda HTTP, s katero je bil naslov zahtevan. 6.1.3 Podrobnosti zahteve Ob izbiri želene zahteve se odpre drevesni pogled celotne zahteve (glej sliko 6.4). Ta prikazuje vse sledi, ki so bile zbrane med izvajanjem zahteve. Pri vsaki sledi imamo možnost vpogleda v dodatne informacije (npr. vrnjena vrednost funkcije, izveden stavek SQL). Za vsako sled imamo tudi grafičen prikaz, kdaj in koliko časa se je sled izvajala. Slika 6.4: Realno časovni pogled spletnega vmesnika: podrobnosti zahteve.

Profiliranje spletnih aplikacij Stran 23 6.1.4 Seznam krmilnikov Ta pogled (slika 6.5) prikazuje vse zahteve iz izbrane časovne rezine, združene glede na ime krmilnika. Za vsak krmilnik dobimo naslednje informacije: celoten čas trajanja zahtev, koliko zahtev je krmilnik prejel in ime krmilnika. Slika 6.5: Realno časovni pogled spletnega vmesnika: seznam krmilnikov. 6.2 Podrobnosti krmilnika Slika 6.6: Spletni vmesnik: podrobnosti krmilnika. Ta pogled (slika 6.6) prikazuje podrobne informacije o izvajanju izbranega krmilnika. Pogled je namenjen spremljanju delovanja in odzivnosti aplikacije med obremenitvijo. V okviru tega pogleda so zbrane naslednje skupine informacij:

Profiliranje spletnih aplikacij Stran 24 1. Osnovni podatki 2. Odzivni časi 3. Zahteve na minuto 4. Povprečni odzivni čas. Posamezne skupine informacij bomo opisali v nadaljevanju. 6.2.1 Osnovni podatki Ta vrsta pogleda prikazuje osnovne podatke o izvajanju krmilnika. Uporabniku so na voljo naslednje informacije (glej sliko 6.7): Število zahtev - prikazuje kolikokrat je bil krmilnik zahtevan; Čas izvajanja stavkov SQL - skupen čas izvajanja stavkov SQL; Čas izvajanja v JVM - čas, ki ga je krmilnik porabil za izvajanje programske kode; Skupen čas - čas, porabljen za izvajanje krmilnika. Slika 6.7: Pogled podrobnosti krmilnika: osnovni podatki. 6.2.2 Odzivni čas V tem pogledu dobimo osnovne podatke o odzivnosti krmilnika. Prikazane so naslednje informacije (glej sliko 6.8): Povprečen čas izvajanja stavkov SQL - čas, ki ga je krmilnik povprečno porabil za izvajanje stavkov SQL; Povprečen čas izvajanja v JVM - čas, ki ga je krmilnik v povprečju potreboval za izvajanje programske kode;

Profiliranje spletnih aplikacij Stran 25 Najboljši odzivni čas - najkrajši odzivni čas, ki ga je dosegel krmilnik; Najslabši odzivni čas - najdaljši odzivni čas, ki ga je dosegel krmilnik. Slika 6.8: Pogled podrobnosti krmilnika: odzivni čas. 6.2.3 Zahteve na minuto Je grafični prikaz zahtev, ki jih je profilirana aplikacija servirala v določenem časovnem obdobju (npr. v minuti). Graf na sliki 6.9 prikazuje zahteve združene po minutah. Iz grafa lahko razberemo morebitno poslabšanje zmogljivosti pri testiranju z obremenitvijo. Slika 6.9: Pogled podrobnosti krmilnika: zahteve na minuto. 6.2.4 Povprečni odzivni čas Graf prikazuje povprečni odzivni čas aplikacije skozi določeno časovno obdobje (glej sliko 6.10). Na osnovi prikazanih podatkov lahko razberemo morebitne anomalije v odzivnem času. Slika 6.10: Pogled podrobnosti krmilnika: povprečni odzivni čas.

Profiliranje spletnih aplikacij Stran 26 6.3 Baza podatkov Slika 6.11: Spletni vmesnik: baza podatkov. Ta pogled prikazuje informacije o izvajanju stavkov SQL (glej sliko 6.11). Pogled je namenjen iskanju»počasnih«stavkov SQL ter identificiranju morebitnih odstopanj pri porabljenem času za obdelavo stavkov SQL. V okviru tega pogleda so zbrane naslednje skupine informacij: 1. Zadnji stavki SQL 2. Najpočasnejši stavki SQL 3. Povprečen čas izvajanja 4. Seznam stavkov SQL 6.3.1 Zadnji stavki SQL Prikažejo se zadnji izvedeni stavki SQL v aplikaciji (glej sliko 6.12). S prikazanimi podatki si lahko pomagamo pri spremljanju zadnjih stavkov SQL, dobimo pa tudi takojšen vpogled v dolžino njihovega izvajanja. V tabeli so prikazane naslednje informacije: stavek SQL, datum in čas izvajanja in dolžina izvajanja.

Profiliranje spletnih aplikacij Stran 27 Slika 6.12: Pogled baza podatkov: zadnji stavki SQL. 6.3.2 Najpočasnejši stavki SQL V okviru tega prikaza dobimo informacije o desetih najpočasnejših stavkih SQL. V tabeli je prikazan naslednji sklop informacij (glej sliko 6.13): stavek SQL, povprečni čas izvajanja, najboljši čas izvajanja, in najslabši čas izvajanja. Takšen pogled omogoča hitro analizo najpočasnejših stavkov SQL. Na tej osnovi pa se lahko odločimo za optimizacijo. Slika 6.13: Pogled baza podatkov: najpočasnejši stavki SQL. 6.3.3 Povprečni čas izvajanja Grafično je prikazan povprečni čas, ki ga aplikacija porabi za izvajanje stavkov SQL v določeni časovni rezini (glej sliko 6.14).

Profiliranje spletnih aplikacij Stran 28 Slika 6.14: Pogled baza podatkov: povprečni čas izvajanja. 6.3.4 Seznam stavkov SQL Ta pogled prikazuje vse stavke SQL, izvedene v aplikaciji (glej sliko 6.15). Tabela omogoča iskanje največkrat klicanega stavka, kakor tudi stavka z največjim skupnim porabljenim časom. V tabeli prikazujemo naslednje podatke: stavek SQL, število izvajanj, povprečni čas izvajanja, skupni čas, delež (odstotek) porabljenega časa glede na vse stavke SQL. Slika 6.15: Pogled baza podatkov: seznam stavkov SQL.

Profiliranje spletnih aplikacij Stran 29 7 REZULTATI IN DISKUSIJA V tem poglavju bomo predstavili delovanje naše razvite aplikacije. 7.1 Podrobnosti implementacije Pri implementaciji rešitve smo si pomagali z naslednjimi knjižnjicami: Spring Framework 3.0.3, jquery 1.4.2, jquery SVG 1.4.3 in AspectJ 1.6.9 7.2 Programska oprema Za prikaz delovanja pa smo uporabili naslednjo programsko opremo: OpenJDK 1.6, AspectJ 1.6.9, Apache Tomcat 6.0.26 in operacijski sistem Fedora 13 7.3 Priprava profilirnika za uporabo Za delovanje aplikacije potrebujemo dve knjižnjici (formata.jar) in spletno aplikacijo (formata.war): shared.jar, tracer.jar in

Profiliranje spletnih aplikacij Stran 30 profiler.war. Aplikacija je kompatibilna s strežniki, ki podpirajo standarda Java Servlet in JSP. Knjižnico shared.jar moramo kopirati v kazalo z deljenimi knjižnicami spletnega strežnika. Ta knjižnjica vsebuje dele profilirnika, ki jih uporabljata tako sledilnik kot spletna aplikacija. Knjižnico tracer.jar pa moramo dodati med knjižnice spletne aplikacije, ki jo želimo profilirati. Spletno aplikacijo profiler.war dodamo kar k spletnemu strežniku. Pri zagonu spletnega strežnika moramo še dodati agenta AspectJ, ki omogoča dodajanje kode za profiliranje v izbrano spletno aplikacijo. 7.4 Delovanje aplikacije Za prikaz delovanja bomo uporabili aplikacijo Petclinic [1]. To je vzorčna aplikacija namenjena demonstraciji delovanja ogrodja Spring. Predpostavimo, da je aplikacija Petclinic dosegljiva na naslovu /petclinic/. V aplikaciji bomo dostopali do omenjenih spletnih strani, in sicer do vsake strani tolikokrat, kot je dopisano ob naslovu strani: / (2x) /owners/search (3x) /petclinic/owners?lastname=davis (2x) /owners/2 (1x) Po dostopu do teh spletnih strani pa bomo opazovali vplive zahtev na posamezne poglede spletnega vmesnika. Najprej si bomo ogledali realno časovni pogled. Pri vseh zahtevah pričakujemo zahtevo z metodo GET (protokol HTTP), tip odgovora pa bo text/html s kodiranjem znakov ISO-8859-1 ter s tipom pogleda JstlView. Od našega profilirnika pričakujemo jasen prikaz na grafu, da so se pričakovane zahteve res zgodile. Ob ustrezni izbiri časovne rezine, v kateri smo izvedli zahteve do aplikacije, pričakujemo izpis vseh teh zahtev. Zahtev v seznamu mora biti 8. Hkrati še pričakujemo izpis izvedenih krmilnikov v seznamu krmilnikov. Izvesti se morajo štirje različni krmilniki. Na sliki 7.1 je realno časovni pogled po izvajanju zahtev. Pri oznaki (1) lahko vidimo jasen dvig linije v grafu. To prikazuje, da smo v tisti časovni rezini res izvedli zgoraj naštete zahteve. Z oznako (2) je označen seznam zahtev HTTP. V tabeli lahko vidimo vseh osem

Profiliranje spletnih aplikacij Stran 31 zahtev, vsak URI pa se pojavi tolikokrat, kolikokrat smo do njega dostopali. Ob oznaki (3) lahko vidimo seznam krmilnikov. Ta se sklada s številom različnih naslovov, do katerih smo dostopali. Slika 7.1: Delovanje aplikacije: realno časovni pogled po izvajanju zahtev. Sedaj si oglejmo še pogled»podrobnosti krmilnika«za naslov /owners/search. krmilnika za ta naslov je FindOwnersForm#setupForm. Ime Kot rezultat izvajanja zahtev morajo na tem krmilniku biti izvedene 3 zahteve. Skupen čas izvajanja mora biti enak seštevku časov izvajanja vseh treh zahtev. Povprečen čas izvajanja pa mora biti enak času izvajanja vseh zahtev deljeno s tri. Najslabši odzivni čas mora biti enak času, ki ga je porabila najpočasnejša zahteva, medtem ko mora biti najboljši odzivni čas enak času zahteve, ki je za izvajanje porabila najmanj časa. Na obeh grafičnih prikazih, tj. na pogledu»zahteve na minuto«in»odzivni čas«, moramo opaziti porast vrednosti na grafu v ustreznem časovnem obdobju. Slika 7.2 prikazuje pogled podrobnosti krmilnika po koncu izvajanja opisanih zahtev. Oznaka (1) kaže, da je bil krmilnik izveden trikrat, kar smo tudi pričakovali. Ob oznaki (2) lahko vidimo, da je skupen čas izvajanja krmilnika dejansko seštevek časov. Z oznako (3) je označen povprečni čas izvajanja krmilnika. Za pravilnega sta se izkazala tudi najboljši in najslabši odzivni čas krmilnika (glej oznako (4)). Oznaki (5) in (6) prikazujeta porast vrednosti na obeh grafičnih prikazih v času izvajanja zahtev.

Profiliranje spletnih aplikacij Stran 32 Slika 7.2: Delovanje aplikacije: pogled podrobnosti krmilnika po izvajanju zahtev. Kot zadnji del profilirnika pa si bomo ogledali delovanje pogleda podatkovna baza. V tabeli zadnji stavki SQL pričakujemo prikazanih deset stavkov SQL, kar je tudi največje število stavkov, ki so še lahko prikazani v tabeli. V aplikaciji pričakujemo izvajanje štirih različnih stavkov SQL. To se bo pokazalo v seznamu najpočasnejših stavkov SQL in seznamu vseh stavkov SQL. Oba seznama bosta vsebovala samo štiri stavke SQL, saj so v obeh prikazih enaki stavki združeni. Na grafičnem prikazu»povprečni čas izvajanja«bomo opazili dvig vrednosti grafa v času izvajanja zahtev, vendar pa le v primeru, če bo povprečje izvajanja stavkov SQL večje ali enako kot ena milisekunda. Pogled»Podatkovna baza«po izvajanju opisanih zahtev prikazuje slika 7.3. Vidimo lahko, da tabela zadnji stavki SQL (glej oznako (1)) res vsebuje deset stavkov SQL, pri čemer so stavki urejeni po času izvajanja. Tudi tabeli najpočasnejši stavki SQL (oznaka (2)) in seznam stavkov SQL (oznaka (4)) vsebujeta pričakovano število prikazanih stavkov, tj. štiri. Ker je bilo povprečje dolžin izvajanj stavkov SQL manjše kot ena milisekunda, na grafičnem prikazu povprečnega časa izvajanja ni sprememb (oznaka (3)).

Profiliranje spletnih aplikacij Stran 33 Slika 7.3: Delovanje aplikacije: pogled baza podatkov po izvajanju zahtev.

Profiliranje spletnih aplikacij Stran 34 8 ZAKLJUČEK V diplomskem delu smo razvili celovito rešitev za profiliranje spletnih aplikacij. To je profilirnik namenjen izključno profiliranju spletnih aplikacij. To orodje prikazuje spletnemu razvijalcu najbolj pomembne informacije. Slabost rešitve je, da ne omogoča vpogleda v dolžino izvajanja vseh metod. Navedeno bi lahko rešili s sledilnikom, ki bi sledil izvajanju vseh metod. Naša rešitev pa omogoča hiter vpogled v izvajanje aplikacije, pri čemer detajlno profiliranje izvedemo s splošnim profilirnikom, ko že vemo, kje težavo iskati. Lastno rešitev bi lahko izboljšali predvsem z dodajanjem novih funkcionalnosti v profilirnik. Tako bi lahko dodali nove grafične predstavitve podatkov. Omogočili bi lahko tudi filtriranje tabel, s čimer bi prikazovali samo določen nabor zahtev (npr. odzivni čas večji od postavljenega praga). Največji premik v smeri univerzalnosti našega orodja pa bi vsekakor bilo, če bi razvili sledilnike še za druga ogrodja in jezike. To bi seveda omogočilo še širšo uporabnost našega profilirnika pri razvoju spletnih aplikacij.

Profiliranje spletnih aplikacij Stran 35 7 VIRI, LITERATURA [1] http://www.springsource.com/, Cloud Application Platform For Spring - Java, dostop 1.9.2010. [2] Craig Walls, Spring in Action, Third Edition, Manning, 2011. [3] http://www.newrelic.com/, New Relic.:. On-Demand Application Managment, dostop 1.9.2010. [4] Ramnivas Laddad, AspectJ in Action, Second Edition, Manning, 2009. [5] http://www.springsource.org/insight, tc Server Developer Edition with Spring Insight, dostop 1.9.2010. [6] http://www.eclipse.org/aspectj/, The AspectJ Project, dostop 1.9.2010. [7] https://visualvm.dev.java.net/, visualvm, dostop 1.9.2010.

Profiliranje spletnih aplikacij Stran 36

Profiliranje spletnih aplikacij Stran 37