New Relic & JMeter - Testarea perfectă a performanțelor

Ca urmare a marilor articole introductive prezentate recent pe site-ul Nettuts +, acest articol arată cum puteți să luați New Relic la nivelul următor. Ca instrument de monitorizare a performanței, New Relic este fantastic, dar despre performanță testarea, înainte de a merge în viață. Aici intră JMeter să joace. În acest tutorial veți vedea cum putem stresa testarea aplicației noastre sub sarcină realistă și combinăm rezultatele JMeter și New Relic pentru a vă oferi încredere în performanța aplicațiilor dvs. înainte de a vă lansa într-un mediu de producție.

Conținut sponsorizat

Acest conținut a fost comandat de NewRelic și a fost scris și / sau editat de echipa Tuts +. Scopul nostru cu conținut sponsorizat este de a publica tutoriale relevante și obiective, studii de caz și interviuri inspirate care oferă cititorilor o valoare educațională autentică și ne permit să finanțăm crearea de conținut mai util.

De ce așteptați până la implementare pentru a vedea cum va aplica aplicația dvs. împotriva traficului din lumea reală. Dacă există un blocaj în codul tău care degradează experiența utilizatorului, vrei într-adevăr să intri în direct? Ce se întâmplă dacă am putea găsi devreme aceste blocaje, ameliorând performanța și oferind o aplicație excelentă utilizatorilor noștri pentru prima dată, și să mențină o continuă comparație cu benchmarking-ul. JMeter și New Relic împreună vă pot oferi această suită perfectă de testare a performanțelor.


Demo Cerere

Înainte de a putea începe să folosim New Relic și JMeter, avem nevoie de o aplicație simplă pentru a face unele teste de performanță pe! Deci, permiteți scrierea unei aplicații simple Ruby Sinatra care are un serviciu pe care îl putem testa. Nu voi intra prea mult în crearea acestei aplicații, așa cum puteți citi pe Sinatra în alte articole despre Nettuts+.

Aplicația va fi falsă puțin, pentru a ne permite să vedem câteva rezultate interesante, în conformitate cu ceea ce putem vedea în diferite aplicații. Vom scrie un serviciu care are un ID și, în funcție de acel id, va reveni o valoare fie imediat, fie cu întârziere. Acest lucru ne va arăta ce se poate întâmpla dacă cererile sunt tratate rapid sau lent și impactul pe care îl are asupra performanței generale a aplicațiilor dvs., deoarece mulți utilizatori fac cereri.

Iată codul care definește serviciile:

 cer "sinatra" necesita "puma" necesita modulul "newrelic_rpm" Exemplu clasa App < Sinatra::Base get '/example/:id' do |id| result = id if id == '1' result = "This is our id: #id" end if id == '2' sleep 3 result = "We waited for id: #id" end result end end end

După cum puteți vedea, acest lucru este în mod clar un exemplu conturat, însă ideea este că avem câteva servicii de răspuns rapid și unul cu o mică întârziere. Acum putem folosi această aplicație și începem să scriem planul nostru de testare a performanței în JMeter. Permiteți mai întâi instalarea JMeter pe mașina noastră.


Încărcarea în noua relicvă

Obținerea rapoartelor dvs. de aplicare la New Relic este un proces foarte simplu. Noua versiune Relic suportă Ruby, Python, PHP, Java și alte platforme, oferind ghiduri ușor de urmat pentru toți. În cazul lui Ruby Sinatra, este literalmente un proces în patru etape:

  • Adăugați gemul "newrelic_rpm" în GemFile și "instalați pachetul".
  • În principala "app.rb" unde am definit ruta de servicii de mai sus, adăugați o linie "require" newrelic_rpm "".
  • Descărcați fișierul "newrelic.ini" din contul dvs. în New Relic și plasați-l într-un dosar configurat în aplicația dvs..
    (Asigurați-vă că modul de monitorizare este setat la "true" pentru dezvoltare dacă se rulează local.)
  • Rackup aplicația dvs. și a vedea-o enumerate în New Relic!

Odată ce ați urmat acești pași simpli, ar trebui să începeți să vedeți câteva date care vin prin intermediul aplicației New Relic pe măsură ce aplicați aplicația dvs. cu un anumit trafic. Veți ști că funcționează când aplicația este listată și devine verde.


Din motive de exhaustivitate, voi lista doar o scurtă prezentare generală a vederii principale pe care o oferă New Relic pentru aplicațiile dvs. Designul pe New Relic este în principal pentru a monitoriza aplicațiile care sunt în medii de producție cu trafic live. Ecranul de prezentare oferă o privire rapidă asupra stării actuale a aplicației dvs. și a modului în care răspunde solicitărilor clienților.

Ecranul poate fi defalcat după cum urmează:

  1. Timp de raspuns - acesta este timpul mediu de răspuns al apelurilor din cadrul aplicației dvs..
  2. Apdex - Noul metric Relics pentru experiența clienților. Un scor mai mult spre 1 indică marea majoritate a utilizatorilor
    solicitările se încadrează într-un termen rezonabil. Apdex-ul poate fi util pentru alertare atunci cand cade sub un numar setat.
  3. tranzitată - cererile pe minut (RPM) făcute în cererea dvs..
  4. Tranzacții web - diferitele rute accesate în aplicația dvs. Acestea sunt ordonate de cererile cele mai consumatoare de timp.
  5. Rata de eroare - procentajul de solicitări care cauzează o eroare. Puteți să faceți clic și să depanați erorile individuale aici.


Ce este JMeter?


JMeter este o aplicație Java care vă permite să construiți planuri de testare care pot stresa testarea aplicației. Puteți seta totul, de la numărul de utilizatori simultani ai serviciului, la cantitatea de solicitări pe care o efectuează o secundă. Puteți chiar să ridicați cererile pentru a vedea cum se ocupă aplicația dvs. cu schimbarea încărcării, la fel cum ar putea fi implementată în lumea reală.

Ca parte a acestui tutorial, voi arăta elementele de bază ale unui plan de testare care rulează împotriva aplicațiilor dvs., dar cu o multitudine de pluginuri și documentație există o mulțime de instrumente pentru a face față oricăror teste de performanță de care aveți nevoie.


Instalare și utilizare

Instalarea este destul de simplă și aici vom lista instrucțiunile pentru Mac și Linux.

Mac OS X

Pe un Mac JMeter poate fi instalat foarte ușor prin Brew. Odată ce ați făcut Brew încercați
următoarea comandă:

 brew instalează jmeter

Linux

Pe o mașină Linux, pur și simplu descărcați pagina de descărcări JMeter. Apoi, pur și simplu urmați instrucțiunile furnizate.

Toate platformele

Odată ce aveți pachetul principal JMeter, trebuie să instalați și setul standard de pluginuri. Vom folosi un plugin în special mai târziu, prin urmare, trebuie să adăugăm aceste elemente pentru a putea să le folosim. Setul standard de pluginuri poate fi obținut de la acest link: http://jmeter-plugins.org/downloads/file/JMeterPlugins-1.0.0.zip Odată ce ați descărcat extrasul în pachetul JMeter, care este localizat la: "/ usr / local / Cellar / jmeter / "pe un Mac și oriunde l-ați instalat pe Linux.


Analiza în Relic - Mai întâi avem nevoie de un plan de testare JMeter!

Deci, acum avem instalat JMeter și aplicația noastră simplă, să examinăm această aplicație și să vedem cum se comportă. Când porniți JMeter veți obține acest ecran:

Acum, să setăm adresa URL de bază pentru solicitările noastre. Faceți clic dreapta pe "Planul de testare" în panoul din stânga și alegeți 'Add -> Config Element -> Default Default Request'. Acum putem introduce adresa URL de bază aici.


Acum putem adăuga numărul de fire sau "utilizatori" din sistemul nostru. Pentru a face acest lucru faceți clic dreapta pe "Planul de testare" din nou și alegeți "Adăugați -> Subiecte (utilizatori) -> Grup de subiecte". Putem apoi să intrăm în utilizatori, în acest caz 20. Asigurați-vă că ați ales opțiunea "Count loop count" pentru totdeauna, deoarece acest lucru ne va permite să controlam timpul și numărul de solicitări prin intermediul unui plugin ulterior.


Odată ce avem grupul de fire, putem defini acum solicitările pe care vrem să le facem cererii noastre că vom trece la testul de performanță. Pentru a face acest lucru vom adăuga "Solicitare HTTP" la "Planul nostru de testare". Acest lucru se poate găsi prin clic dreapta pe "Grupul de fire" și alegerea "Adăugați -> Sampler -> Solicitare HTTP". Putem apoi să definim solicitarea de a face în panoul de mai jos.


Puteți vedea cum nu este nevoie să definim adresa URL de bază, așa cum am făcut-o mai devreme și în loc de asta trebuie doar să adăugăm calea pentru cerere. În acest caz, calea este la răspunsul nostru 'exemplu / 1'. Veți observa, de asemenea, că am mers înainte și am adăugat celelalte două cereri împreună cu rezultatele și tablourile de grafică pe care le vom folosi pentru a analiza rezultatele testelor. Până acum ar trebui să vă agățați de adăugarea de elemente și pot fi găsite cu ușurință în meniu din numele lor. Principalele două elemente de interes sunt "Timpul de modelare a debitului" și "graficul compozit".

Temporizatorul de configurare ne permite să identificăm modul în care dorim ca solicitările să fie făcute în aplicația noastră în timp. De exemplu, putem configura o solicitare pe secundă timp de 60 de secunde și apoi vom rampa până la cinci solicitări o secundă timp de 60 de secunde și vom vedea efectul pe care îl are asupra timpilor de răspuns. Să aruncăm o privire asupra modului în care configuram acest lucru în panoul Cronometrul de configurare.


Prin urmare, prin introducerea și adăugarea fiecărui rând, puteți defini suma solicitării de a face și cât timp ar trebui să facă acest lucru. Apoi putem vizualiza rezultatele folosind "Graph Composite", care arată tranzacțiile efectuate pe secundă în funcție de timpul de răspuns al solicitărilor noastre. Acest lucru necesită o configurație minimă, adăugând pur și simplu cele două grafice pe care le vom combina, apoi în setările pentru graficul compozit, adăugați graficele pe care le solicităm astfel:


Asta e! Acum putem rula planul nostru de testare și începem să vedem câteva rezultate. Apăsați redarea în partea de sus a ecranului și apoi faceți clic pe graficul compozit. Acesta va începe să creeze rezultatele în timp ce acestea vin și puteți obține o imagine a modului în care cererea dvs. răspunde. Să ne uităm la rezultatele noastre.


Putem vedea clar că saltul cererilor la un minut are un impact destul de mare asupra aplicației noastre. Pentru primul minut, cererile sunt stabile la unu pe secundă și oferă timpi de răspuns de aproximativ două / trei ms. Cu toate acestea, atunci când creștem la cinci, timpul de răspuns creste ușor lovind cinci și cinci m / s. Evident, acestea sunt momente de răspuns foarte rapide în lumea reală, dar aici arătăm cum putem mări încărcătura și să vedem dacă va fi afectat.

Să comparăm aceste rezultate cu serviciul care are o întârziere de trei secunde. Cum va face acest lucru cu creșterea încărcăturii? Pentru a trece la exemplul doi, faceți clic dreapta pe exemplul unu și alegeți să comutați. Acest lucru va dezactiva această solicitare, apoi face o trecere pe exemplul doi și care o va permite. Asigurați-vă că faceți clic pe "Curata tot" (Pensulă de ștergere) din partea de sus pentru a șterge rezultatele ultimei runde, apoi apăsați pe redare.


Chiar și cu întârzierea de trei secunde, serverul a gestionat cererile destul de bine și vedem la fel în ceea ce privește rezultatele acestui serviciu. Doar o creștere de câțiva milisecunde la creșterea solicitărilor. Cu un serviciu atât de simplu, acest lucru este de așteptat.


Noi Relic Analytics

Puterea reală vine acum cu combinarea acestor date cu New Relic. Am putea, de exemplu, să setăm JMeter să ruleze o jumătate de oră cu diferite variante de încărcare și apoi să folosească New Relic pentru a analiza rezultatele și pentru a-și folosi funcționalitatea pentru a căuta blocaje în aplicație. Acestea pot fi apoi reglate, crescând performanța înainte de a le livra clienților.

Din nou, nu voi intra în configurația New Relic deoarece acest lucru este acoperit de alte articole recente despre Nettuts + (Vezi aici). Dar, odată ce cererea dvs. este conectată, este pur și simplu un caz de generare a încărcării prin JMeter și conectarea la New Relic pentru a vedea rezultatele. Pentru această rulare, am configurat timerul de configurare pentru a rula încărcătura noastră timp de 30 de minute, ridicând cererile de la 5 la 10 și apoi 15 pe secundă. Acest lucru ar trebui să ne dea un trafic rezonabil pentru a se uita la New Relic.


Odată ce testul JMeter a rulat, putem să aruncăm o privire în "New Relic" pe care acum putem vedea că a stat pe traficul urmărit prin aplicație.


Acest lucru arată clar creșterea solicitărilor, la vârf atingând aproximativ 400 cereri pe minut (RPM) și timpii de răspuns rămân stabili la trei secunde. Putem intra mai adânc în statistici și ne uităm la tranzacția pe care o facem. Dacă faceți clic pe vizualizarea Tranzacții Web, putem vedea analiza New Relic pe această parte a aplicației. Dacă codul care a gestionat solicitarea a avut mai multe straturi, cum ar fi metodele de a apela alte sisteme pentru a obține date înainte de a le prezenta înapoi utilizatorului, am vedea mai mult o defalcare.

De exemplu, în stânga se arată că am cheltuit 100% din timpul solicitării, în acel apel. Dacă am avea mai multe etape, cum ar fi un apel la o bază de date, am putea vedea un procent ridicat acolo și am știut să optimizăm interogarea la baza de date pentru a crește performanța.


Noua aplicație Relic oferă, de asemenea, o imagine de raportare excelentă asupra datelor aplicațiilor, numită Scalabilitate. Acest raport poate fi cu adevărat util pentru a monitoriza capacitatea aplicațiilor dvs. de a gestiona sarcina tot mai mare. Diagrama indică timpul dvs. de răspuns față de solicitările pe minut și puteți vedea în mod clar dacă există o degradare a timpului de răspuns în timp ce acestea cresc. Acesta este un instrument excelent și unul la care ar trebui să vă referiți adesea atât la testarea performanțelor ca aceasta, cât și la monitorizarea performanței aplicației de producție.

În exemplul nostru de mai jos, este clar că aplicația este capabilă să mențină un timp de răspuns de trei secunde chiar și odată cu creșterea RPM.


Noul Relic oferă, de asemenea, o altă viziune, cea a Capacității. Acest lucru ne permite să analizăm cât de mult din resursele disponibile folosesc aplicația noastră. Aceasta indică dezvoltatorului dacă numărul de instanțe care vă difuzează aplicația este suficient pentru a face față încărcării pe care o obțineți. Acest lucru este vital pentru a vă asigura că nu vă apropiați de capacitate și că aveți capacitatea de a gestiona orice spikes în trafic care pot apărea în afara fluxului normal de trafic. Noul Relic rezumă pagina bine, alături de analiza aplicației noastre aici, pe care o putem vedea, se întâmpină bine chiar și pe această singură instanță.



Concluzie

Scopul acestui tutorial a fost să vă arătăm cum să configurați rapid planurile de testare JMeter pentru aplicația dvs., astfel încât să puteți testa performanța aplicației înainte de a le livra clienților. Această abordare poate fi utilizată în proiecte noi, asigurând că aplicația pe care o veți livra este pregătită pentru traficul din lumea reală. Poate fi folosit și pentru aplicațiile vechi, oferindu-vă un indicator al performanței de bază, astfel încât, pe măsură ce faceți modificări în continuare, puteți vedea dacă performanța aplicației dvs. se îmbunătățește sau scade.

Prin utilizarea instrumentelor excelente oferite de New Relic, puteți să vă monitorizați aplicația online în timp real, dar și să luați setul de instrumente și să o aplicați în analiza offline. Acest lucru vă va da, dezvoltatorului, încrederea în produsul dvs. atât pe măsură ce se dezvoltă, cât și pe când este lansat în sălbăticie.

Cod