Apache Benchmark + GNUPlot: Mät och diagram prestanda för din webbserver

Det spelar ingen roll om den används nginx, Apache, Lighttpd eller på annat sätt, alla nätverksadministratörer som har en webbserver kommer någon gång att vilja veta hur snabbt webbservern svarar på ett visst antal frågor.

Managed-Services-Server-Management-e1368625038693

Apache-riktmärke + GNUPlot

Den här gången använder vi ett verktyg som heter Apache-riktmärke, som trots att den har 'apache' i sitt namn, INTE bara är för att mäta Apache-prestanda, men kan också användas för Nginx och andra. Egentligen ska jag använda den för att mäta prestanda för nginx.

Vi kommer också att använda GNUPlot, vilket hjälper oss att skapa diagram som dessa med några rader:

resultat

Installerar Apache Benchmark och GNUPlot

Apache Benchmark är ett verktyg som vi kan använda efter att ha installerat Apache-paketet, GNUPlot kommer att finnas tillgängligt efter att ha installerat paketet med samma namn. Dåså ...

På distros som Debian, Ubuntu eller liknande:

sudo apt-get install apache2 gnuplot

I distributioner som ArchLinux eller derivat:

sudo pacman -S apache gnuplot

Vi behöver bara installera Apache-paketet, vi behöver inte starta det eller konfigurera något annat, det är bara att installera det.

Använda Apache-riktmärket

Vad vi kommer att göra är att skicka ett specifikt antal förfrågningar (100) i grupper om flera (från 20 till 20) till en specifik webbplats. Vi sparar resultatet i en .csv-fil (result.csv) och bearbetar det sedan med GNUPloit, raden skulle vara:

ab -g resultados.csv -n 100 -c 20 http://nuestro-sitio-web.com/

Det är mycket viktigt att ange den slutliga / i webbadressen till den webbplats som ska mätas.

Det här är utdata eller logg som visar mig när jag testar en webbplats i mitt nätverk:

Detta är ApacheBench, version 2.3 <$ Revision: 1638069 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensierat till Apache Software Foundation, http://www.apache.org/ Benchmarking gutl.jovenclub.cu (ha tålamod) ... gjort

Serverprogramvara: nginx Servervärdnamn: gutl.jovenclub.cu Serverport: 80

Dokumentväg: /
Dokumentlängd: 206 byte Samtidig nivå: 20 Tid för tester: 0.101 sekunder Kompletta förfrågningar: 100 Misslyckade förfrågningar: 27 (Anslut: 0, Mottag: 0, Längd: 27, Undantag: 0) Svar som inte är 2xx: 73 Överfört totalt: 1310933 byte HTML överförd: 1288952 byte
Förfrågningar per sekund: 993.24 [# / sek] (medelvärde)
Tid per förfrågan: 20.136 [ms] (medelvärde) Tid per förfrågan: 1.007 [ms] (medelvärde, över alla samtidiga förfrågningar) Överföringshastighet: 12715.49 [Kbytes / sek] mottagna Anslutningstider (ms) min. Medelvärde [+/- sd] median max Anslut: 0 1 0.2 1 1 Bearbetning: 1 17 24.8 4 86 Väntar: 1 15 21.5 4 76 Totalt: 1 18 24.8 5 87 Andel av förfrågningarna som serveras inom en viss tid (ms) 50% 5 66% 6 75% 22 80% 41 90% 62 95% 80 98% 87 99% 87
100% 87 (längsta begäran)

Jag har markerat med rött vad jag anser vara det viktigaste, som har varit mer eller mindre:

  1. Uppgifter om servern som vi testar samt URL i fråga.
  2. Antal förfrågningar per sekund.
  3. Hur många millisekunder tog servern för att betjäna den begäran som tog längst, det vill säga den som tog längst tid att besvaras.

Med den här informationen kan de få en uppfattning om hur lång tid det tar för servern att delta i den mängd förfrågningar, de kan sedan lägga till ett bättre cachesystem, inaktivera moduler som de inte använder, etc etc, kör testet igen och se om prestandan förbättrats eller inte .

Jag rekommenderar att du kör testet 2 eller 3 gånger, så att du skapar något som en marginal, eftersom resultaten av två tester i rad sällan är identiska.

Andra användbara alternativ eller parametrar för Apache-riktmärke:

-k -H 'Acceptera-kodning: gzip, tömma' : Med detta accepterar ab cache och komprimering som servern har konfigurerat, så tiderna blir lägre.

-f urls.txt : Så istället för att bara testa webbplatsens index kommer det att utföra tester på webbadresserna som vi anger i den filen.

Hur som helst ... ta en titt på man ab för dig att se.

Visa resultatet i en graf:

Att sätta denna utdata i en bild, det vill säga i ett mer visuellt medium och så många gånger, är det allt som chefer lyckas förstå ... för detta kommer vi att använda som jag sa tidigare, GNUPlot

I samma mapp där vi har filresultaten.csv (kom ihåg, vi genererade precis med ovanstående kommando) vi ska skapa en fil som heter gnuplot.p:

nano plot.p

I den kommer vi att lägga följande:

ställa in terminal png storlek 600 sätt utgång "results.png"ange titel"100 begäranden, 20 samtidiga begäranden "ställa in storleksförhållande 0.6 ställa in rutnät och ställa in xlabel"begäranden"set ylabel"svarstid (ms)"komplott"resultat.csv"använder 9 smidig sbezier med rader titel"gutl.jovenclub.cu"

Jag har markerat med rött vad du alltid bör kontrollera. Det är och från topp till botten:

  1. Namnet på den bildfil som ska genereras
  2. Antal totala och samtidiga förfrågningar.
  3. Namnet på filen som vi just skapade.
  4. Domän vi arbetar med.

När vi har lagt in det, spara och avsluta (Ctrl + O och då Ctrl + X) kommer vi att utföra följande:

gnuplot plot.p

Och voila, som kommer att generera grafen med önskat namn, mitt är:

resultat2

Slutet!

Apache Benchmark har många fler alternativ, det finns också många kombinationer som vi kan använda för att göra vårt prestandatest ännu mer komplett.

Men hej, det här har varit grunderna 😉

Njut!


9 kommentarer, lämna din

Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   Francisco sade

    Intressant apache-riktmärke, jag visste inte om gnuplot, är det möjligt att ändra stilen på utdata? Jag säger som för en formell rapport.

    Hälsningar från Chile.

    1.    KZKG ^ Gaara sade

      Ja, det finns många konfigurationer på nätet för gnuplot, sök efter Google för att se om du hittar något seriöst eller professionellt nog för att du ska kunna använda det, för det är allas smak 🙂

  2.   Wolf119 sade

    Ummm Jag ska testa det just nu på en virtuell apache-server som jag kör för att se hur detta går, med avseende på GUTL, eftersom det avfyras mycket snabbt från 80 förfrågningar, eller hur? Låt oss se att 100 ms inte gör det De är ingenting, men det höga som ger 10 fler förfrågningar jämfört med 70 till 80 med 80 till 90 väcker min uppmärksamhet

    1.    KZKG ^ Gaara sade

      Det måste bero på att kön eller antalet maximala trådar ska delta samtidigt. Men jag gjorde testet utan gzip, utan tömning, utan cache eller något 😉

  3.   Charlie brun sade

    Mycket intressant, särskilt för användning av GNUPlot. Från vad jag ser kan det användas för att generera grafer från nästan alla datamängder, eller hur? ...

    1.    KZKG ^ Gaara sade

      Ja naturligtvis, du skickar data i en fil åtskild med kommatecken eller något liknande, du berättar för det hur du bearbetar det i konfigurationsfilen, och voila

  4.   Adolfo sade

    Hej, jag spenderar alltid på att läsa den här bloggen men jag har aldrig kommenterat någon artikel, och det här verkar vara ett bra tillfälle.
    Vad jag vill dela med dig är att denna typ av diagram kan tolkas felaktigt, eftersom Apache Bench sorterar resultatet med ttime (total tid) istället för sekventiell tid. Även om uppgifterna fortfarande är sanna, visar grafen förmodligen inte vad vi vill ha.
    Här lämnar jag länken där jag läste den.
    http://www.bradlanders.com/2013/04/15/apache-bench-and-gnuplot-youre-probably-doing-it-wrong/

    Hälsningar.

  5.   Hugo sade

    Apache Benchmark är inte det bästa verktyget för att mäta HTTP-servrarnas prestanda på datorer med flera kärnor. Dessutom är bara 100 förfrågningar med 20 samtidiga anslutningar ett mycket svagt test, något mer realistiskt skulle vara 1,000 eller 10,000 100 förfrågningar med 10,000 samtidiga anslutningar (det är känt att Nginx är en av applikationerna som kan betjäna mer än XNUMX XNUMX förfrågningar per sekund) och för detta är det bättre att använda ett verktyg som weightttp, som är utformat för flerkärniga datorer och använder epoll som är snabbare, till skillnad från Apache Bench som använder en enda tråd och en mindre effektiv händelseshanteringsmekanism.

    För att få fram min poäng, förutsatt att servern bara har fyra kärnor:

    vägttp -n 10000 -c 100 -t 4 -k "http://our-web-site.com/"

  6.   tron sade

    Hej alla,
    När jag ritar grafen (från CSV) med gnuplot ger det mig följande fel, kan du berätta för mig hur man löser det?

    "Plot.p", rad 8: varning: Hoppar över datafilen utan giltiga poäng

    plotta «graph.csv» med 9 smidig sbezier med rader titel «AB - localhost / web»
    ^
    "Plot.p", rad 8: x-intervallet är ogiltigt

    Kan jag också skapa HTML-sidor med gnuplot?