Instrumente de testare online Visual Studio, experiență și comparație cu abordarea manuală

Într-o postare anterioară, ne-am uitat la construirea unei infrastructuri pentru testarea încărcării în cloud pe mașinile virtuale Microsoft Azure. Acum vom arunca o privire la instrumentul de testare a încărcării, Visual Studio Online, și îl vom compara cu abordarea manuală.

Testarea de încărcare folosind Visual Studio Online vă permite să creați și să configurați automat toată infrastructura necesară în cloud - implementând controlerul și numărul necesar de agenți cu anumite setări. Rezultatele unei rulări de testare rămân întotdeauna în baza de date cloud VS Online și le puteți accesa oricând.

Nu am folosit această abordare înainte din 2 motive principale: —infrastructura era instabilă și se prăbușea des —nu a fost posibilă eliminarea contoarelor de performanță din sistemul încărcat, deci. rezultatele testelor au fost limitate la datele de transfer.

În Actualizarea 3 pe Visual Studio 2013, a devenit posibilă încărcarea dinamică a contoarelor de performanță necesare din telemetria Application Insights chiar în timpul procesului de testare a încărcării (mai multe detalii pot fi găsite aici, dar numai pentru educația generală - multe s-au schimbat de când acest articol a fost scris).

Ne vom uita la configurarea Application Insights pentru serviciul simplu WCF Calculator (din articolul anterior) și testarea încărcării acestuia cu Visual Studio Online.

De asemenea, vom compara noua abordare cu cea descrisă în postarea anterioară. Vom avea nevoie de:

- Visual Studio Ultimate 2013 (Actualizare 4), - Cont online Visual Studio - O mașină virtuală în Microsoft Azure. - Date de testare

Descărcați proiectul folosit în articol. (Acum gazda pentru serviciul WCF nu va fi WindowsService, un IIS).

Configurarea mediului

Creăm o nouă mașină virtuală prin consola Azure (am experimentat pe imaginea Windows Server 2012 R2). Când creați o mașină virtuală, portul 80 (HTTP) trebuie deschis.

După crearea cu succes a mașinii virtuale, ne conectăm la ea prin RDP. Pentru a rula un serviciu HTTP WCF pe mașina noastră virtuală, acolo trebuie instalate componente suplimentare (IIS etc.). Acest lucru se face foarte simplu:

  • DeschidețiService Managerși selectațiAdd Roles and Feature.din meniulManage
  • La pasulTipul de instalare, selectațiInstalare bazată pe roluri sau pe funcții.
  • La pasulFeatures, extindeți lista de caracteristici.NET Framework 4.5 Features => Servicii WCFși bifați caseta de selectareActivare HTTP.. Instalatorul va conecta automat restul componentelor dependente ale IIS, ASP.NET etc.
  • Începeți procesul de instalare

online

După configurarea cu succes a infrastructurii, ar trebui să implementăm serviciul nostru WCF. Pentru a face acest lucru:

  • Din folderul de date de testare, copiați folderulServiceîntr-un director arbitrar de pe mașina virtuală.
  • Deschideți consola de gestionareIIS(Server Manager=> Tools=> Internet Information Service (IIS))
  • Creați o nouă aplicație în interiorul site-ului web implicit cu un serviciu de calculator

online

În plus, pentru a vă asigura că totul funcționează corect, puteți deschide serviciul direct în browser - http://localhost/applicationName/Calculator.svc

Ar trebui să se deschidă o pagină care să conțină un link pentru a genera wsdl

studio

Configurarea aplicației Insights

Apoi, accesați meniul de gestionare VS Online din browser și faceți clic pe linkul Aplicațieperspective.

online

Apoi, faceți clic peFaceți clic aici pentru a afișa instrucțiunile.

Pe pagina următoare, va trebui să specificați un nume de aplicație arbitrar și să faceți clic peCreați(pentru a fi mai precis, numele containerului virtual Application Insights în care vor fi stocate informațiile de diagnosticare).

studio

După aceea, portalul va genera automat ApplicationInsights.config (fișier de configurare cu setări de diagnosticare personale) și programul de instalareMicrosoftMonitoringAgent. În continuare, copiați ApplicationInsights.config în folderul rădăcină al serviciului Calculator de pe mașina virtuală și instalați agentul.

Vă rugăm să rețineți că în timpul instalării, trebuie să bifați caseta

online

După instalare, reporniți IIS.

În mod implicit, ApplicationInsights.config este configurat pentru a colecta doar statistici de la câteva contoare de performanță de bază. Dar putem adăuga contoare suplimentare la acest fișier - pentru aceasta este suficient să le listăm într-o formă specială în secțiunea PerformanceCounters XML, de exemplu:

Pentru a afla numele corect al contoarelor solicitate, recomand să le descărcați folosind utilitarulperfmon.Pentru a face acest lucru, adăugați contoarele necesare în Monitorul de performanță, selectați-le și salvați cu ajutorul butonul dreapta al mouse-ului în format html.

visual

Dacă deschideți fișierul salvat în notepad, atunci puteți vedea numele corect al contoarelor în acest formular:

Teste de rulare

instrumente

Apoi, deschideți fișierul Remote.testsetting din soluție și selectațiRuntestsfolosindVisualStudioOnline.

instrumente
Deoarece avem un test foarte simplu, pașii suplimentari din fișierul testsettingspoate fi omis. Utilizând acești pași, puteți configura agenți de testare virtuali (de exemplu, instalați certificate, care este relevant pentru serviciile HTTPS, rulați orice fișiere batch etc.).

Apoi, în appconfig a proiectului RemoteTestProject, trebuie să scrieți URI-ul corect pe care îl ascultă Calculatorul de servicii WCF.

Acum putem trece la configurarea testului de încărcare.

În mod implicit, testul de încărcare va rula în 250 de fire pe 2 agenți single-core, de exemplu. fiecare agent va genera o încărcare de 125 fire. Pentru a crește numărul de agenți, utilizațiRunSettings=>AgentCount(TotalCore).Puteți vedea câteva setări suplimentare, precum și posibile probleme, la link.

Pentru a activa contoarele de performanță dinApplicationInsights, faceți clic dreapta peRunSettings=>ObținețiPerformanțăDatede laAplicațieInformațiiși selectați contoarele de interes.

experiență

În timpul executării testelor de încărcare, Visual Studio Online va începe să aloce resurse pentru agenți

studio

După ce resursele sunt alocate, va începe testul de încărcare în sine

visual

Contoarele de performanță dinAplicațieInsightsvor fi în filaAplicație

studio
în timpul testului de încărcare

După finalizarea testului, raportul poate fi descărcat și vizualizat în mod obișnuit.

studio

Compararea tehnicilor

Ca experiment, am testat acest serviciu WCF folosind ambele abordări.

În primul caz, am implementat 2 mașini virtuale single-core și am instalat agenții Visual Studio pe ele. Am instalat un controler local și am rulatTest. Drept urmare, doi agenți au reușit să genereze o încărcare de aproximativ 500 de apeluri pe secundă, în timp ce încărcarea CPU pe ambii agenți a atins 100%, în timp ce sarcina procesorului pe mașina virtuală cu serviciul de testare a fost de aproximativ 15-20% ( contribuția principală a fost adusă în mod natural de procesul w3wp).

Am repetat acest test, dar folosind Visual Studio Online + Application Insights (număr total de agenți = 2). Rezultatul a fost identic cu primul, 2a agenți cloud single-core au generat o încărcare continuă de aproximativ 500 de solicitări pe secundă. După ce am așteptat finalizarea testului, am descărcat raportul și am constatat că procesorul era încărcat 100% și pe agenții virtuali.

studio

Creșterea numărului de nuclee de agent la 4x a arătat o creștere aproape liniară a încărcării la o medie de aproape 800 de solicitări pe secundă (încărcarea serverului a fost de 40% în medie). Astfel, am presupus că serviciul nostru simplu WCF Calculator este capabil să reziste la o încărcătură de 3000 de solicitări paralele pe secundă (lucrund pe o mașină cu un singur nucleu), ținând cont de faptul că trecem și un timeout de 1 ms în cerere. De fapt, totul s-a dovedit a fi greșit. Când am rulat un test de încărcare pe 10 agenți (250 fire), performanța maximă a fost de aproximativ 1000 de solicitări pe secundă, în timp ce agenții erau subutilizați (CPU 30%) și serverul era supraîncărcat (CPU 100%).

Am început să mă uit la el și mi-am rescris testul de încărcare pentru a vedea creșterea dependenței procesorului serverului de creșterea sarcinii. La fiecare 10 secunde, sarcina a crescut cu 5 utilizatori.

La aproximativ 100 de utilizatori, se observă performanță de vârf

1000 de solicitări pe secundă, o creștere suplimentară a încărcării duce la o degradare rapidă a CPU-ului serverului Calculator.

instrumente

VS Online permiteridicați infrastructura cloud de testare a sarcinii, puterea necesară, aproape prin comutarea unui buton. Mai mult, este de remarcat faptul că această infrastructură nu este în niciun caz inferioară celei clasice (cu agenți și un controlor). Acum despre preț. Application Insights este în prezent în Preview și este gratuit. Astfel, un minut al unui utilizator virtual costă 1 copeck. un test de încărcare de 1000 de utilizatori virtuali timp de 10 minute vă va costa aproximativ 100 de ruble (indiferent dacă generați o încărcare sau 10 pe un agent).