Nu contează dacă este folosit nginx, Apache, Lighttpd sau altfel, orice administrator de rețea care are un server web va dori la un moment dat să știe cât de rapid răspunde serverul web la un anumit număr de interogări.
Apache Benchmark + GNUPlot
De data aceasta vom folosi un instrument numit Apache Benchmark, care, deși are „apache” în numele său, NU este doar pentru măsurarea performanței Apache, ci poate fi folosit și pentru Nginx și altele. De fapt, îl voi folosi pentru a măsura performanța nginx.
Vom folosi, de asemenea GNUPlot, care ne va ajuta să realizăm astfel de grafice cu câteva linii:
Instalarea Apache Benchmark și GNUPlot
Apache Benchmark este un instrument pe care îl putem folosi după instalarea pachetului Apache, GNUPlot va fi disponibil după instalarea pachetului cu același nume. Deci ...
Pe distribuții precum Debian, Ubuntu sau altele similare:
sudo apt-get install apache2 gnuplot
În distribuții precum ArchLinux sau derivate:
sudo pacman -S apache gnuplot
Folosind Apache Benchmark
Ceea ce vom face este să trimitem un anumit număr de solicitări (100) în grupuri de mai multe (de la 20 la 20) la un anumit site. Vom salva rezultatul într-un fișier .csv (result.csv) și apoi îl vom procesa cu GNUPloit, linia ar fi:
ab -g resultados.csv -n 100 -c 20 http://nuestro-sitio-web.com/
Aceasta este ieșirea sau jurnalul care îmi arată când testez un site din rețeaua mea:
Acesta este ApacheBench, versiunea 2.3 <$ Revizie: 1638069 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licențiat la The Apache Software Foundation, http://www.apache.org/ Benchmarking gutl.jovenclub.cu (ai răbdare) ..... gata Software de server: Nginx Server Nume de gazdă: gutl.jovenclub.cu Port server: 80 Calea documentului: / Lungimea documentului: 206 octeți Nivelul concurenței: 20 Timpul necesar testelor: 0.101 secunde Solicitări complete: 100 Solicitări nereușite: 27 (Conectare: 0, Primire: 0, Lungime: 27, Excepții: 0) Răspunsuri non-2xx: 73 Total transferate: 1310933 octeți HTML transferați: 1288952 octeți Solicitări pe secundă: 993.24 [# / sec] (medie) Timp pe cerere: 20.136 [ms] (medie) Timp pe cerere: 1.007 [ms] (medie, la toate solicitările simultane) Rată de transfer: 12715.49 [Kbytes / sec] primit Timp de conexiune (ms) medie medie [+/- sd] median max Conectare: 0 1 0.2 1 1 Procesare: 1 17 24.8 4 86 În așteptare: 1 15 21.5 4 76 Total: 1 18 24.8 5 87 Procentajul cererilor furnizate într-un anumit timp (ms) 50% 5 66% 6 75% 22 80% 41 90% 62 95% 80 98% 87 99% 87 100% 87 (cea mai lungă solicitare)
Am marcat cu roșu ceea ce consider că este cel mai important lucru, care a fost mai mult sau mai puțin:
- Datele serverului pe care îl testăm, precum și adresa URL în cauză.
- Numărul de solicitări pe secundă.
- Câte milisecunde a luat serverul pentru a răspunde la solicitarea care a durat cel mai mult, adică cea care a durat cel mai mult timp pentru a fi răspuns.
Cu aceste informații, ei pot avea o idee despre cât timp va dura serverul pentru a participa la acea cantitate de solicitări, pot apoi să adauge un sistem de cache mai bun, să dezactiveze modulele pe care nu le folosesc, etc etc, să execute din nou testul și vezi dacă performanța s-a îmbunătățit sau nu.
Alte opțiuni utile sau parametri Apache Benchmark:
-k -H „Acceptare-codificare: gzip, deflate” : Cu această ab va accepta memoria cache și compresia pe care serverul le-a configurat, astfel încât timpul va fi mai mic.
-f urls.txt : Deci, în loc să testeze doar indexul site-ului, acesta va efectua teste pe adresele URL pe care le specificăm în acel fișier.
Oricum ... aruncă o privire omul ab pentru ca tu să vezi.
Arată rezultatul într-un grafic:
Pentru a pune această ieșire într-o imagine, adică într-un mediu mai vizual și de multe ori, este tot ceea ce managerii reușesc să înțeleagă ... pentru aceasta vom folosi așa cum am spus mai înainte, GNUPlot
În același folder în care avem fișierul results.csv (nu uitați, tocmai am generat cu comanda de mai sus) vom crea un fișier numit gnuplot.p:
nano plot.p
În el vom pune următoarele:
set terminal png size 600 set output "results.png„titlu setat”100 cereri, 20 solicitări concurente "setați raportul de dimensiune 0.6 setați grila și setați xlabel"solicitări„setează ylabel”timp de răspuns (ms)"complot"rezultate.csv„folosind 9 sbezier netede cu titlul liniilor”gutl.jovenclub.cu"
Am marcat cu roșu ceea ce ar trebui să verificați întotdeauna. Adică și de sus în jos:
- Numele fișierului imagine care urmează să fie generat
- Numărul de cereri totale și concurente.
- Numele fișierului pe care tocmai l-am generat.
- Domeniul la care lucrăm.
Odată ce am introdus asta, salvăm și ieșim (Ctrl + O și apoi Ctrl + X), vom executa următoarele:
gnuplot plot.p
Și voila, care va genera graficul cu numele dorit, al meu este:
Apache Benchmark are mult mai multe opțiuni, există și multe combinații pe care le putem folosi pentru a face testul nostru de performanță și mai complet.
Dar hei, acestea au fost elementele de bază 😉
Bucurați-vă!
Interesant punct de referință apache, nu știam despre gnuplot, este posibil să modificați stilul de ieșire? Spun în ceea ce privește un raport formal.
Salutări din Chile.
Da, există o mulțime de configurații în rețea pentru gnuplot, căutați de Google pentru a vedea dacă găsiți vreun lucru suficient de serios sau profesionist pentru ca dvs. să îl utilizați, pentru că asta este gustul tuturor 🙂
Ummm, o voi testa chiar acum pe un server virtual apache pe care îl rulez pentru a vedea cum merge, în ceea ce privește GUTL, deoarece se declanșează foarte repede din 80 de cereri, nu? Să vedem că 100 ms nu nimic, dar maximul care dă pentru încă 10 cereri față de 70 la 80 cu 80 la 90 îmi atrage atenția
Trebuie să fie din cauza cozii sau a numărului de fire maxime la care să participe simultan. Cu toate acestea, am făcut testul fără gzip, fără dezumflare, fără cache sau nimic 😉
Foarte interesant, mai ales pentru utilizarea GNUPlot. Din ceea ce văd, poate fi folosit pentru a genera grafice din aproape orice set de date, nu? ...
Da, desigur, treci datele într-un fișier separat prin virgule sau ceva de genul asta, îi spui cum să le procesezi în fișierul de configurare și voila
Bună ziua, petrec mereu timp citind acest blog, dar nu am comentat niciodată vreun articol, iar acest lucru pare o oportunitate bună.
Ceea ce vreau să vă împărtășesc este că acest tip de grafic poate fi interpretat greșit, deoarece Apache Bench sortează rezultatul folosind ttime (timp total) în loc de timp secvențial. Deși datele sunt încă adevărate, graficul probabil nu arată ceea ce dorim.
Aici las linkul unde l-am citit.
http://www.bradlanders.com/2013/04/15/apache-bench-and-gnuplot-youre-probably-doing-it-wrong/
Salutări.
Apache Benchmark nu este cel mai bun instrument pentru a măsura performanța serverelor HTTP pe computere cu mai multe nuclee, în plus, doar 100 de cereri cu 20 de conexiuni simultane este un test foarte slab, ceva mai realist ar fi 1,000 sau 10,000 de cereri cu 100 de conexiuni simultane ( se știe că Nginx este una dintre aplicațiile capabile să servească mai mult de 10,000 de cereri pe secundă) și pentru aceasta este mai bine să folosiți un instrument precum weighttp, care este conceput pentru echipe cu mai multe nuclee și folosește epoll care este mai rapid, spre deosebire de Apache Bancă care folosește un singur fir și un mecanism de gestionare a evenimentelor mai puțin eficient.
Pentru a ajunge la punctul meu de vedere, presupunând că serverul are doar 4 nuclee:
weighttp -n 10000 -c 100 -t 4 -k "http://our-website.com/"
Bună tuturor,
Când desenezi graficul (din CSV) cu gnuplot îmi dă următoarea eroare, îmi poți spune cum să-l rezolv?
"Plot.p", linia 8: avertisment: Omiterea fișierului de date fără puncte valide
graficul «graph.csv» folosind 9 sbezier lin cu titlul liniilor «AB - localhost / web»
^
„Plot.p”, linia 8: intervalul x este nevalid
Cu gnuplot, pot genera și pagini HTML?