Posted by: cosmin ilie on: February 25, 2010
Cum a trecut ceva vreme de la ultimul post revin cu ultima parte din articol.
Odată descărcat zip-ul cu MOSS Performance Load Tests va trebui sa facem o serie de modificări înainte de al putea rula. Proiectul folosește fișiere CSV pentru a tine datele de care are nevoie in vederea simulării load-ului dupa cum urmează:
nota: utilizatorii trebuie sa fie in formatul DOMENIU\username,parola
Pentru a nu avea probleme editați fișierele csv atât din directorul root cat si din directorul OfficeServerTransactions.
Odata editate fișierele va trebui sa alegem tipul de test pe care dorim sa rulam in funcție de profilul aplicației. Putem alege intre un test doar cu operații de citire (MossReadMix) si cel cu operații mixte- citire si scriere (MossREadWriteMix) Pentru aceste exemplu am ales un test care sa genereze si operații de citire si scriere:
Din opțiunile de rulare se poate adapta modalitatea de rulare la contextul nostru ajutandu-ne sa simulam cat mai bine incarnarea reala de pe server (putem schimba parametri de incarnare putând edita durata de rulare, intervalul dintre operațiuni sau numărul de iterații)
Odata deschis rularea testului este simpla, acesta urmand pe baza fisierelor de configurare:
Analiza rezultatelor testului se poate realiza atât folosind counterele definite in test atât pentru agent cat si de pentru host sau putem folosi PAL pentru o analiza mai completa folosind fișierele threshold pentru MOSS si SQL Server.
MOSS Performance Load Tests reprezintă doar un model pentru testarea de baza a aplicației însa poate fi extins pentru a cuprinde toate elementele dorite a fi analizate. Disponibil nu este doar partea cu tranzacții standard ci si pentru Excel Services. Idea principala este însa ca plecând de la aceste metode simple de testare a aplicației in condiții de incarcare putem preveni o mulțime de neplaceri in timp si de ce nu creste satisfacția utilizatorilor finali care nu vor avea impresia unei investii neprofitabile intr-o aplicare greoaie, eliminând aceste aspecte inca din faza de proiectare.
Posted by: cosmin ilie on: January 18, 2010
Dezvoltarea unei aplicații MOSS 2007 presupune planificarea resurselor alocate, numărul de servere, echipamentele hardware, echipamentele de stocare, spargerea rolurilor in funcție de dimensiune, profilul aplicației, numărul utilizatorilor s.a.m.d. De multe ori am observat ca se trece peste o etapa destul de esențiala in dezvoltare si anume testarea performantei. Exista multe resurse atât pe site-ul Microsoft dar si multe bloguri care fac referința la planificarea unui deployment si partea de sizing, însa chiar daca acestea sunt respectate de multe ori se trece peste partea efectiva de testare. Testarea ne poate confirma corectitudinea calculelor noastre si ne poate arata scăpările sau “bottleneckurile” existente in design. Exista multe referințe despre load testing si analiza performantei, una dintre ele fiind : Estimate performance and capacity requirements (Office SharePoint Server) document care îl putem folosi drept referința in testele noastre.
Estimate performance and capacity requirements for portal collaboration environments
Estimate performance and capacity requirements for search environments
Estimate performance and capacity requirements for Internet environments (Office SharePoint Server) .
Din pacate insa etapa de load testing si analizarea rezultatelor se realizează de multe ori doar in companii specializate in livrarea de soluții MOSS, unde exista atât resursa umana necesara dar si cunostiintele pentru a putea formula scenarii de test si analiza rezultate lor. Liam Cleary [SharePoint MVP] are o serie de articole foarte interesante despre Visual Studio Team Suite Edition si load testing pentru MOSS (http://www.helloitsliam.com/archive/tags/Testing/default.aspx) si chiar recomand la toata lumea sa arunce o privire, insa ce putem face daca nu avem la dispozitie resursele necesare pentru testarea performantei, a scalabilitatii si identificarea potențialelor probleme?
Cea mai la indemana soluție ar fi sa folosim MOSS Performance Load Tests disponibile împreuna cu SharePoint 2007 Test Data Population Tool pe codeplex. Pentru analiza rezultatelor putem folosi PAL. Despre PAL am mai scris in posturile anterioare astfel incat nu voi intra in detaliu despre ce poate face, denumirea fiind concludenta ( Performance Analysis of Logs ).MOSS Performance Load Tests va simula load-ul a 50 de utilizatori si permite atat efectuarea de actiuni mixte (read and write) sau doar simple (read).
Visual Studio Team Suite Edition ofera multe facilitati pentru testare inclusiv utilizarea si masurarea counterelor in timpul run-ului insa in situatia de fata vom utiliza PAL pentru analiza. Putem folosi atat counterele care vin cu testul cat si analiza logurilor din perfmon ulterior.
Pentru configurarea counterelor pe care apoi le vom urmări in timpul run-ului vom edita fișierul de threshold din PAL (MOSS 2007) lasand doar componentele necesare pentru serverul respectiv si vom crea cate un Threshould pentru fiecare rol de MOSS instalat (FrontEnd, SQL Server, Index, Search Server, etc).
Odata definite fisierele pentru serverele din ferma, le exportam ca templateuri pentru a le putea apoi importa in perfmon.
Daca avem MOSS instalat pe Server 2008 pentru a putea importa fisierele de tip html va trebui sa facem cativa pasi suplimentari (Server 2008 necesita fisiere template in format xml nu html.) Va trebui sa importam template-ul pe o masina cu Server 2003 iar de pe severul MOSS va trebui sa rulam
logman query -s <server2003 machine mane>
pentru a afisa lista cu counterele importate , iar apoi :
logman export -n "MOSS counter log name" -xml mossDB.xml -s <server2003 machine mane>
Odata importate fișierele care conțin counterele dorite, următorul pas va fi configurarea masinii de test care ne va genera activitatea. Configurarea si rularea testului precum si analiza rezultatelor le voi acoperi insa intr-un post viitor.
Posted by: cosmin ilie on: December 1, 2009
In ultimele posturi am tot descris countere si cum ele ne pot prezenta o imagine de ansamblu asupra potențialei problemei, analizând simptomele, corelând valori ale mai multor countere si trăgând o concluzie. Insa de multe ori avem nevoie de o analiza mai detaliata întinsa pe o perioada mai lunga de timp (zile, saptamani sau chiar luni) pentru a trage o concluzie. E clar ca in astfel de situații nu ne mutam la servici deschidem perfmonul si încercam sa urmarim valorile. Avem nevoie de o metoda mai eficienta pentru a putea analiza logurile de performanta. Poate cel mai bun instrument pentru analiza este PAL (Performance Analysis of Logs)
Pentru a utiliza PAL aveti nevoie de Log Parser 2.2 care va parsa logurile si Microsoft Office Web Components 2003 pentru a genera grafice. PAL poate fi descarcat de pe codeplex, la fel ca si documentatia de utilizare.
PAL folosește ca imput pentru analiza fișiere XML (Threshold files) unde ne putem defini toata logica de analiza si expertiza pe care o avem. Folosind GUI-ul putem chiar crea fisierele de analiza, utilizând cunostiintele pe care le avem si particularitatea aplicației pe care o vom analiza.
Revenind la discutia inițiala, PAL ofera posibilitatea de a exporta in format HTML lista cu countere pentru ca apoi, sa putem înregistra datele in perfmon folosind un counter log pentru a lua masuratori. Pentru a importa fisierul, din meniul Actions alegem optiunea “New Log Settings From” si selectam fișierul exportat. 
Va trebui totusi sa fim foarte atenti in momentul stabilirii duratei dintre masuratori. Valoarea implicita este de 15 secunde insa de obicei este bine sa o marim la 30 secunde, 1 minut sau chiar mai mult, in special deca avem un numar mare de countere si dorim sa analizam o perioada mai îndelungata. Multi pot cadea in capcana de a captura cat mai multa infomatii stabilind un interval foarte mic, insa sa nu uitam ca luarea de masutatori consuma resurse si sub nici un caz, o masuratoarea nu ar trebui sa creeze spike-uri in CPU mari astfel riscam ca analiza sa nu fie valida. La fel daca dimensiunea logurilor va fi foarte mare generarea raporatelor poate dura destul de mult si exista riscul ca scriptul VB din spate sa nu faca fata. Scopul nostru in analiza nu este de a prinde toate spike-urile ci de stabili trenduri si a studia valorile medii pe perioade cat mai semnificate pentru problema pe care o analizam.
Pentru a realiza analiza va trebui sa pornim interfața de PAL, iar apoi vom selecta logul pe care dorim sa-l analizam si intervalul de analiza. Urmatorul pas consta in algerea fisirului de configurare pentru analiza (Threshold file). GUI-ul va genera un o comanda care va apela scripul de analiza (un script VB) trimițândui parametri stabiliti.
Scriptul va analiza logurile si pe baza fișierului de analiza, va construi un raport cu analiza counterelor selectate si afișând alerte daca valorile definite vor fi atinse.
PAL ofera o modalitate foarte eficienta de a lua “pulsul” unui sistem si de a ne oferi indicii cu privire la bottleneck-urile de pe sistem. PAL mai ofera, in afara posibilitatii de a ne defini fișierele de configurație aplicate specificului aplicatiilor analizate, o serie de configurari predefinite care ne pot ajuta sa luam pulsul pentru SQL Server, IIS, Project Server, Hyper-V, Exchange, Biztalk, AD sau Sharepoint.