Apache Benchmark + GNUPlot: Sukatin at i-graph ang pagganap ng iyong web server

Hindi mahalaga kung ginamit ito Nginx, Apache, Lighttpd o kung hindi man, ang anumang administrator ng network na mayroong isang web server ay nais na malaman kung gaano kabilis ang pagtugon ng web server sa isang naibigay na bilang ng mga query.

Pinamamahalaang-Mga Serbisyo-Server-Pamamahala-e1368625038693

Apache Benchmark + GNUPlot

Sa oras na ito gagamit kami ng isang tool na tinawag Apache Benchmark, na bagaman mayroon itong 'apache' sa pangalan nito, ay HINDI lamang para sa pagsukat ng pagganap ng Apache, ngunit maaari ding gamitin para sa Nginx at iba pa. Sa totoo lang, gagamitin ko ito upang masukat ang pagganap ng Nginx.

Gagamitin din namin GNUPlot, na makakatulong sa amin na gumawa ng mga graphic na tulad nito na may ilang mga linya:

resulta

Pag-install ng Apache Benchmark at GNUPlot

Ang Apache Benchmark ay isang tool na maaari naming magamit pagkatapos i-install ang Apache package, ang GNUPlot ay magagamit pagkatapos i-install ang package ng parehong pangalan. Kaya pagkatapos ...

Sa mga distrito tulad ng Debian, Ubuntu o katulad:

sudo apt-get install apache2 gnuplot

Sa mga distrito tulad ng ArchLinux o mga derivatives:

sudo pacman -S apache gnuplot

Kailangan lamang naming i-install ang Apache package, hindi namin kailangang simulan ito o i-configure ang anumang bagay, sapat na lamang ang pag-install.

Paggamit ng Apache Benchmark

Ang gagawin namin ay magpadala ng isang tukoy na bilang ng mga kahilingan (100) sa mga pangkat ng maraming (mula 20 hanggang 20) sa isang tukoy na site. Ise-save namin ang resulta sa isang .csv file (resulta.csv) at pagkatapos ay iproseso ito sa GNUPloit, ang linya ay:

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

Napakahalaga na ilagay ang pangwakas / sa URL ng site upang sukatin.

Ito ang output o log na nagpapakita sa akin kapag sumubok ako ng isang site sa aking network:

Ito ang ApacheBench, Bersyon 2.3 <$ Pagbabago: 1638069 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Lisensyado sa The Apache Software Foundation, http://www.apache.org/ Benchmarking gutl.jovenclub.cu (maging matiyaga) ..... tapos na

Server Software: nginx Server Hostname: gutl.jovenclub.cu Server Port: 80

Path ng Dokumento: /
Haba ng Dokumento: 206 bytes Antas ng Kasabay: 20 Kinuha ang oras para sa mga pagsubok: 0.101 segundo Kumpletong mga kahilingan: 100 Nabigong mga kahilingan: 27 (Kumonekta: 0, Makatanggap: 0, Haba: 27, Mga Pagbubukod: 0) Mga hindi-2xx na tugon: 73 Kabuuang nailipat: 1310933 bytes inilipat ang HTML: 1288952 bytes
Mga kahilingan bawat segundo: 993.24 [# / sec] (ibig sabihin)
Oras bawat kahilingan: 20.136 [ms] (ibig sabihin) Oras bawat kahilingan: 1.007 [ms] (ibig sabihin, sa lahat ng mga kasabay na kahilingan) Rate ng paglipat: 12715.49 [Natanggap ng [Kbytes / sec] ang Mga Oras ng Koneksyon (ms) min ibig sabihin [+/- sd] median max Connect: 0 1 0.2 1 1 Pagproseso: 1 17 24.8 4 86 Naghihintay: 1 15 21.5 4 76 Kabuuan: 1 18 24.8 5 87 Porsyento ng mga kahilingan na hinatid sa loob ng isang tiyak na oras (ms) 50% 5 66% 6 75% 22 80% 41 90% 62 95% 80 98% 87 99% 87
100% 87 (pinakamahabang kahilingan)

Minarkahan ko ng pula kung ano ang itinuturing kong pinakamahalagang bagay, na higit pa o mas kaunti:

  1. Ang data ng server ay sinusubukan namin, pati na rin ang pinag-uusapan na URL.
  2. Bilang ng mga kahilingan bawat segundo.
  3. Ilang milliseconds ang kinuha ng server upang maihatid ang kahilingan na tumagal ng pinakamahaba, iyon ay, ang isa na pinakamahaba upang masagot.

Sa impormasyong ito maaari silang magkaroon ng isang ideya kung gaano katagal aabot para sa server na dumalo sa halagang iyon ng mga kahilingan, maaari silang magdagdag ng isang mas mahusay na sistema ng cache, i-deactivate ang mga module na hindi nila ginagamit, atbp atbp, muling simulan ang pagsubok at tingnan kung napabuti ang pagganap o hindi.

Inirerekumenda kong patakbuhin ang pagsubok 2 o 3 beses, upang lumikha ka ng isang bagay tulad ng isang margin, dahil ang mga resulta ng dalawang pagsubok sa isang hilera ay bihirang magkapareho.

Iba pang mga kapaki-pakinabang na pagpipilian o parameter ng Apache Benchmark:

-k -H 'Accept-Encoding: gzip, deflate' : Sa ab na ito tatanggapin ang cache at compression na na-configure ng server, kaya't magiging mas mababa ang oras.

-f urls.txt : Kaya sa halip na subukan lamang ang index ng site, magsasagawa ito ng mga pagsubok sa mga URL na tinukoy namin sa file na iyon.

Sabagay ... tingnan mo tao ab Para makita mo.

Ipakita ang resulta sa isang graph:

Upang ilagay ang output na ito sa isang imahe, iyon ay, sa isang mas medium na visual at maraming beses, lahat ng bagay na pinamamahalaan ng mga tagapamahala ... para sa gagamitin namin tulad ng sinabi ko dati, GNUPlot

Sa parehong folder kung saan mayroon kaming mga resulta ng file.csv (tandaan, nakabuo lang kami ng nasa itaas na utos) lilikha kami ng isang file na tinatawag na gnuplot.p:

nano plot.p

Sa loob nito ilalagay namin ang sumusunod:

itakda ang laki ng terminal ng png 600 set output "mga resulta.png"itakda ang pamagat"100 mga kahilingan, 20 kasabay na mga kahilingan "itakda ang laki ng ratio 0.6 set grid at itakda ang xlabel"mga kahilingan"itakda ylabel"oras ng pagtugon (ms)"balangkas"mga resulta.csv"gamit ang 9 makinis na sbezier na may pamagat ng mga linya"gutl.jovenclub.cu"

Naipahiwatig ko sa pula kung ano ang dapat mong laging suriin. Iyon ay at mula sa itaas hanggang sa ibaba:

  1. Pangalan ng file ng imahe na malilikha
  2. Bilang ng kabuuan at kasabay na mga kahilingan.
  3. Pangalan ng file na nilikha lamang namin.
  4. Ginagawa namin ang domain.

Kapag nailagay na namin iyon, i-save at lumabas (Ctrl + O at pagkatapos ay Ctrl + X), isasagawa namin ang sumusunod:

gnuplot plot.p

At voila, na bubuo ng grap na may nais na pangalan, ang akin ay:

mga resulta2

Wakas!

Ang Apache Benchmark ay may maraming iba pang mga pagpipilian, marami ring mga kumbinasyon na maaari naming magamit upang gawing mas kumpleto ang aming pagsubok sa pagganap.

Ngunit hey, ito ang naging pangunahing kaalaman 😉

Enjoy!


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   Francisco dijo

    Kagiliw-giliw na benchmark ng apache, anong gnuplot ang hindi alam posible na baguhin ang istilo ng output? Sinasabi ko bilang para sa isang pormal na ulat.

    Pagbati mula sa Chile.

    1.    KZKG ^ Gaara dijo

      Oo, maraming mga pagsasaayos sa net para sa gnuplot, paghahanap ng Google upang makita kung nakakita ka ng anumang seryoso o sapat na propesyonal para magamit mo ito, dahil iyon ang panlasa ng lahat 🙂

  2.   Wolf119 dijo

    Ummm Susubukan ko ito ngayon sa isang virtual apache server na tumatakbo ako upang makita kung paano ito nangyayari, patungkol sa GUTL, dahil napakabilis nitong pinaputok mula sa 80 mga kahilingan, tama? Tingnan natin na ang 100 ms ay hindi wala, ngunit ang mataas na nagbibigay ng 10 pang mga kahilingan kumpara sa 70 hanggang 80 na may 80 hanggang 90 ang tumawag sa aking pansin

    1.    KZKG ^ Gaara dijo

      Dapat ito ay dahil sa pila o bilang ng mga maximum na thread na dinaluhan nang sabay. Gayunpaman, gumawa ako ng pagsubok nang walang gzip, walang pagpapakalat, walang cache o anumang bagay 😉

  3.   Charlie-brown dijo

    Napaka-interesante, lalo na para sa paggamit ng GNUPlot. Sa nakikita kong maaari itong magamit upang makabuo ng mga grap mula sa halos anumang hanay ng data, tama ba? ...

    1.    KZKG ^ Gaara dijo

      Oo syempre, ipinapasa mo ang data sa isang file na pinaghihiwalay ng mga kuwit o isang bagay na tulad nito, sasabihin mo sa ito kung paano ito iproseso sa file ng pagsasaayos, at voila

  4.   Adolfo dijo

    Kumusta, lagi kong ginugugol ang aking oras sa pagbabasa ng blog na ito ngunit hindi pa ako nagkomento sa anumang artikulo, at ito ay tila isang magandang pagkakataon.
    Ang nais kong ibahagi sa iyo ay ang uri ng grap na ito ay maaaring maling bigyang-kahulugan, dahil ang Apache Bench ay nag-uuri ng resulta gamit ang ttime (kabuuang oras) sa halip na sunud-sunod na oras. Bagaman ang data ay totoo pa rin, marahil ay hindi ipinakita ng grap kung ano ang gusto natin.
    Narito ang link kung saan ko ito nabasa.
    http://www.bradlanders.com/2013/04/15/apache-bench-and-gnuplot-youre-probably-doing-it-wrong/

    Pagbati.

  5.   Hugo dijo

    Ang Apache Benchmark ay hindi ang pinakamahusay na tool upang masukat ang pagganap ng mga HTTP server sa mga computer na may maraming mga core, bilang karagdagan, 100 lamang ang mga kahilingan na may 20 kasabay na koneksyon ay isang napakahinang pagsubok, isang bagay na mas makatotohanang magiging 1,000 o 10,000 mga kahilingan na may 100 kasabay na koneksyon alam na ang Nginx ay isa sa mga application na may kakayahang maghatid ng higit sa 10,000 mga kahilingan bawat segundo) at para dito mas mahusay na gumamit ng isang tool tulad ng weighttp, na idinisenyo para sa mga multi-core computer at gumagamit ng epoll na mas mabilis, hindi katulad ng Apache Bench na gumagamit ng isang solong thread at isang hindi gaanong mahusay na mekanismo ng paghawak ng kaganapan.

    Upang mapunta ang aking punto, sa pag-aakalang ang server ay may 4 na core lamang:

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

  6.   pananampalataya dijo

    Hi lahat,
    Kapag ang pagguhit ng grap (mula sa CSV) na may gnuplot binibigyan nito ako ng sumusunod na error, maaari mo bang sabihin sa akin kung paano ito malulutas?

    "Plot.p", linya 8: babala: Laktawan ang file ng data na walang wastong mga puntos

    balangkas «graph.csv» gamit ang 9 makinis na sbezier na may mga linya ng pamagat «AB - localhost / web»
    ^
    "Plot.p", linya 8: x saklaw ay hindi wasto

    Sa gnuplot, makakagawa din ba ako ng mga pahina ng HTML?