Video: Modular Data Center Supports Ground Breaking Genome Research Analytics | Schneider Electric 2024
Analiza performanței este probabil una dintre cele mai complexe sarcini în proiectarea oricărei aplicații. Este o știință imprecisă, deoarece există mulți factori care intră în joc. Acestea sunt completate în aplicațiile Enterprise JavaBeans (EJB), în care performanța depinde în mare măsură de implementarea containerului EJB pe care îl utilizați. Concluzia este că nu puteți ști dacă luați deciziile corecte de performanță până când le testați.
Următoarele sunt câteva aspecte pe care trebuie să le țineți cont atunci când analizați problemele de performanță:
- Nu toate containerele EJB sunt create egale. În timp ce fiecare container EJB trebuie să respecte specificația EJB, vânzătorii au latitudine largă în implementarea containerului EJB. Cerințele lor se concentrează pe rezultatele operațiunilor, nu pe eficiența unei operații. Unii furnizori vor face o treabă mai bună cu diferite porțiuni dintr-un container EJB. Trebuie să determinați unde pot fi obținute eficiențe într-un container EJB și unde vor avea loc blocaje de performanță. Singura modalitate de a ști asta cu certitudine este să încerci înainte de a cumpăra. Chiar și după cumpărarea unei soluții, ar trebui să se testeze principalele decizii de proiectare, cum ar fi utilizarea sau nu a fasolei entității EJB.
- Performanța poate depinde de eficiența aplicației dvs. Există reguli generale pe care le puteți utiliza pentru a vă ajuta să determinați ce modele de aplicații sunt mai bune decât altele. Dar aceste linii directoare pot fi ușor invalidate cu o implementare necorespunzătoare. Cea mai bună modalitate de a vă asigura că evitați implementările necorespunzătoare este să efectuați recenzii de cod regulate - atunci când vă așezați cu toți colegii dvs. de codificare și doriți să vă revizuiți activitatea - în timpul proiectului dvs. EJB. Ar trebui să vă concentrați comentariile codului asupra analizei sursei și asigurându-vă că aceasta este bine concepută și eficientă. Revizuirile codului oferă o mare oportunitate pentru programatori de a învăța unul de celălalt.
- Dezvoltați un prototip pentru a testa ipotezele de performanță. Iată un scenariu de probă. În calitate de dezvoltator de aplicații EJB, trebuie să decideți devreme dacă să utilizați fasole entitate sau nu pentru a gestiona interacțiunea cu o bază de date. Cele două opțiuni de bază ale dvs. sunt
• Creați fasole entitate pentru a gestiona interacțiunea bazei de date. Fasolea entității poate simplifica interacțiunea bazei dvs. de date dintr-o perspectivă de programare a aplicațiilor. Dar ei pot, de asemenea, să exacte o penalizare de performanță. Unele dintre aceste pedepse pot fi controlate în modul în care implementați fasolea entității - adică folosind interfețele locale versus interfețele la distanță sau făcând obiecte cu granulație obișnuită.
• Baza de date JDBC codifică direct în fasole de sesiune și evită folosirea totală a fasolei entitate. JDBC poate fi mai dificil de utilizat decât folosind fasolea entității cu persistența gestionată de containere. Acest curs poate, de asemenea, să vă submineze capacitatea de a profita de tranzacțiile gestionate de containerele EJB.
Pentru a determina care dintre cele două cursuri este mai adecvat, puteți efectua un test simplu:
1. Creați o entitate fasole și o fasole de sesiune care efectuează ambele operații pe același set de date dintr-o bază de date.
2. Scrieți un program simplu care măsoară timpul necesar invocării unui set de inserturi, actualizări, interogări și modificări în baza de date.
Acest al doilea program ar trebui să invocă fasolea sesiunii pentru un test și entitatea fasolei pentru un alt test - efectuând același set de operații pe fiecare.
3. Analizați rezultatele pentru a stabili dacă performanța va fi o problemă.
Dacă doriți o analiză mai performantă a performanțelor, puteți efectua etape individuale - pentru a identifica cea mai scumpă operație - și apoi încercați să modificați aceste operații pentru a genera câștiguri de performanță.
Pentru o entitate fasole, poate doriți să măsurați performanța în următoarele operații:
- Cât timp durează obținerea unei referințe la o interfață la distanță sau la o interfață locală?
- Care este diferența dintre performanța dintre efectuarea unei actualizări pe o interfață la distanță și o interfață locală?
- Care este diferența dintre actualizarea mai multor rânduri într-o bază de date în JDBC și efectuarea unei actualizări pe mai multe rânduri utilizând metoda de acasă a unei entități fasole?
Răspunsurile la aceste întrebări vor fi diferite de containerele EJB în containerul EJB și vor fi, de asemenea, influențate de: a) driverul JDBC pe care îl alegeți; b) dacă utilizați pooling de conexiuni de baze de date sau nu; și c) eficiența implementărilor dvs. ale fasolei entității și a fasolei sesiunii. Veți fi probabil surprins de unele dintre rezultatele pe care le obțineți - testele ca acestea au un mod de a contesta ipotezele dvs. cu privire la performanța fasolei entitate.
Când reglați un EJB pentru performanță, nu efectuați modificări aleatorii. În schimb, concentrați-vă atenția asupra pașilor din aplicație care costă cel mai mult din punct de vedere al performanței.
Notă: Măsurătorile de performanță arată, de obicei, că un proces de afaceri are doar unul sau două puncte în care pot fi făcute îmbunătățiri semnificative. Această observație a fost făcută destul de des pentru că a condus la crearea regulii Pareto 80-20. Această regulă prevede că 80% din timpul de execuție al unui program se datorează 20% din cod. Scopul dvs. ar trebui să fie acela de a identifica care 20% din cod este cea mai scumpă din punct de vedere al resurselor de sistem și se concentrează pe optimizarea acelei porțiuni.