Nem számít, hogy használják-e nginx, Apache, Lighttpd vagy más, bármely hálózati rendszergazda, akinek van webkiszolgálója, egy bizonyos ponton tudni szeretné, hogy a webkiszolgáló milyen gyorsan reagál egy adott számú lekérdezésre.
Apache benchmark + GNUPlot
Ezúttal egy úgynevezett eszközt fogunk használni Apache benchmark, amely bár a nevében 'apache' van, NEM csak az Apache teljesítményének mérésére szolgál, hanem Nginx és mások számára is használható. Valójában a teljesítményének mérésére használom nginx.
Mi is használni fogjuk GNUPlot, ami segít nekünk néhány sorral hasonló grafikonok készítésében:
Az Apache Benchmark és a GNUPlot telepítése
Az Apache Benchmark egy olyan eszköz, amelyet az Apache csomag telepítése után használhatunk, a GNUPlot az azonos nevű csomag telepítése után lesz elérhető. Így aztán ...
Az olyan disztrókon, mint a Debian, az Ubuntu vagy hasonló:
sudo apt-get install apache2 gnuplot
Olyan disztribúciókban, mint az ArchLinux vagy származékai:
sudo pacman -S apache gnuplot
Az Apache Benchmark használata
Amit meg fogunk tenni, egy meghatározott számú kérést (100) küldünk egy csoportba (20-tól 20-ig) egy adott webhelyre. Az eredményt egy .csv fájlba (result.csv) mentjük, majd a GNUPloit segítségével feldolgozzuk, a sor a következő lenne:
ab -g resultados.csv -n 100 -c 20 http://nuestro-sitio-web.com/
Ez az a kimenet vagy napló mutatja meg, amikor tesztelek egy webhelyet a hálózatomon:
Ez az ApacheBench verziója 2.3 <$ Revision: 1638069 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Az Apache Software Foundation licenceltje, http://www.apache.org/ Benchmarking gutl.jovenclub.cu (légy türelmes) ..... kész Kiszolgálószoftver: nginx Kiszolgálónév: gutl.jovenclub.cu Kiszolgálóport: 80 Dokumentum elérési útja: / Dokumentum hossza: 206 bájt Párhuzamossági szint: 20 A tesztekhez szükséges idő: 0.101 másodperc Teljes kérések: 100 Sikertelen kérések: 27 (Csatlakozás: 0, Fogadás: 0, Hossz: 27, Kivételek: 0) Nem 2xx válaszok: 73 Összes átvitel: 1310933 bájt HTML átvitele: 1288952 bájt Kérelmek másodpercenként: 993.24 [# / sec] (átlag) Kérésenkénti idő: 20.136 [ms] (átlag) Kérésenként töltött idő: 1.007 [ms] (átlag, az összes egyidejű kérés esetén) Átviteli sebesség: 12715.49 [kbyte / sec] fogadott csatlakozási idő (ms) min átlag [+/- sd] medián max Csatlakozás: 0 1 0.2 1 1 Feldolgozás: 1 17 24.8 4 86 Várakozás: 1 15 21.5 4 76 Összesen: 1 18 24.8 5 87 A meghatározott időn belül kiszolgált kérelmek százaléka (ms) 50% 5 66% 6 75% 22 80% 41 90% 62 95% 80 98% 87 99% 87 100% 87 (leghosszabb kérés)
Pirossal jelöltem meg azt, amit a legfontosabbnak tartok, ami többé-kevésbé:
- Az általunk tesztelt szerver adatai, valamint a kérdéses URL.
- Kérelmek száma másodpercenként.
- Hány ezredmásodpercet vett igénybe a kiszolgáló a leghosszabb ideig tartó kérelem kiszolgálására, vagyis arra, amelyre a leghosszabb válasz volt.
Ezekkel az információkkal képet kaphatnak arról, hogy mennyi időbe telik, amíg a szerver eleget tesz az ilyen mennyiségű kérésnek, majd hozzáadhatnak egy jobb gyorsítótár-rendszert, deaktiválhatják azokat a modulokat, amelyeket nem használnak, stb. Stb., Futtathatják újra a tesztet és hátha javult a teljesítmény vagy sem.
Egyéb hasznos Apache benchmark opciók vagy paraméterek:
-k -H 'Elfogadás-kódolás: gzip, deflate' : Ezzel ab elfogadja a kiszolgáló által konfigurált gyorsítótárat és tömörítést, így az idők alacsonyabbak lesznek.
-f urls.txt : Tehát ahelyett, hogy tesztelné a webhely indexét, teszteket hajt végre az abban a fájlban megadott URL-eken.
Különben is ... vessen egy pillantást férfi ab hogy lássa.
Az eredmény megjelenítése grafikonon:
Ahhoz, hogy ezt a kimenetet képbe, vagyis vizuálisabb közegbe helyezzük, és annyiszor, a menedzsereknek mindent meg kell érteniük ... ehhez fogjuk használni, amint azt korábban mondtam, GNUPlot
Ugyanabban a mappában, ahol az eredmények.csv (ne feledje, hogy csak a fenti paranccsal generáltuk) létrehozunk egy gnuplot.p nevű fájlt:
nano plot.p
Ebben a következőket tesszük:
set terminal png méret 600 set output "results.png"set title"100 kérések, 20 egyidejű kérések "set size ratio 0.6 set grid and set xlabel"kérelmek"set ylabel"válaszidő (ms)"cselekmény"eredmények.csv"9 sima sbezier használata vonallal"gutl.jovenclub.cu"
Piros színnel jeleztem, amit mindig ellenőrizni kell. Vagyis fentről lefelé:
- A létrehozandó képfájl neve
- Az összes és egyidejű kérelem száma.
- Az imént létrehozott fájl neve.
- Domain, amelyen dolgozunk.
Miután ezt bevittük, mentse és lépjen ki (Ctrl + O majd Ctrl + X), a következőket hajtjuk végre:
gnuplot plot.p
És voila, ez generálja a kívánt névvel ellátott grafikont, az enyém:
Az Apache Benchmarknak sokkal több lehetősége van, sok olyan kombináció is létezik, amelyekkel még teljesebbé tehetjük a teljesítménytesztünket.
De hé, ez volt az alapok 😉
Enjoy!
Érdekes apache benchmark, nem tudtam a gnuplot-ról, módosítható-e a kimenet stílusa? Azt mondom, ami a hivatalos jelentést illeti.
Üdvözlet Chiléből.
Igen, sok konfiguráció van a neten a gnuplot számára, keressen rá a Google-ra, hátha talál elég komoly vagy profi embert a használatához, mert ez mindenki ízlése 🙂
Ummm, most tesztelni fogom egy virtuális apache szerveren, amelyet futok, hogy lássam, hogyan megy ez a GUTL vonatkozásában, mivel 80 kérésből nagyon gyorsan elindul, igaz? Lássuk, hogy 100 ms nem semmi, de az a magas, amely 10 további kérést ad meg a 70–80 és a 80–90 közötti értékhez képest, felhívja a figyelmemet
Ennek annak a sornak vagy a maximális szálaknak kell lennie, amelyek egyidejűleg részt vesznek. A tesztet azonban gzip nélkül, deflate nélkül, gyorsítótár vagy bármi más nélkül végeztem 😉
Nagyon érdekes, különösen a GNUPlot használata szempontjából. Úgy látom, hogy szinte bármilyen adatkészletből grafikonok készítésére használható, igaz?
Igen, természetesen vesszővel elválasztott fájlban adja át az adatokat, vagy ilyesmi, megmondja, hogyan kell feldolgozni a konfigurációs fájlban, és voila
Helló, mindig a blog olvasásával töltem az időmet, de még soha nem kommentáltam egyetlen cikket sem, és ez jó lehetőségnek tűnik.
Azt szeretném megosztani veletek, hogy az ilyen típusú grafikonokat félre lehet értelmezni, mert az Apache Bench az eredményt a szekvenciális idő helyett a ttime (teljes idő) felhasználásával rendezi. Bár az adatok még mindig igazak, a grafikon valószínűleg nem azt mutatja, amit akarunk.
Itt van a link, ahol olvastam.
http://www.bradlanders.com/2013/04/15/apache-bench-and-gnuplot-youre-probably-doing-it-wrong/
Üdvözlet.
Az Apache Benchmark nem a legjobb eszköz a HTTP szerverek teljesítményének mérésére több maggal rendelkező számítógépeken, ráadásul csak 100 kérés 20 egyidejű kapcsolattal nagyon gyenge teszt, valami reálisabb 1,000 vagy 10,000 100 kérés lenne 10,000 egyidejű kapcsolattal ( ismert, hogy a Nginx egyike azoknak az alkalmazásoknak, amelyek másodpercenként több mint XNUMX XNUMX kérést képesek kiszolgálni), ehhez pedig jobb, ha olyan eszközt használunk, mint a weighttp, amelyet többmagos számítógépekhez terveztek, és az Apache-tól eltérően gyorsabb epoll-t használnak Pad, amely egyetlen szálat és kevésbé hatékony eseménykezelő mechanizmust használ.
Feltéve, hogy a kiszolgálónak csak 4 magja van:
weighttp -n 10000 -c 100 -t 4 -k "http://our-website.com/"
Hi all,
Amikor a grafikont (a CSV-ből) a gnuplot segítségével rajzolom, a következő hibát kapom, meg tudnád mondani, hogyan kell megoldani?
"Plot.p", 8. sor: figyelmeztetés: Adatfájl kihagyása érvényes pontok nélkül
ábrázolja a «graph.csv» elemet 9 sima sbezier használatával az «AB - localhost / web» sorokkal
^
"Plot.p", 8. sor: x tartomány érvénytelen
A gnuplot segítségével generálhatok HTML oldalakat is?