Ab

From EIK wiki

Mis on Ab?

Ab on Apache HTTP serveri reeperporgramm (benchmarking tool). See on loodud sellejaoks, et anda ülevaade hetkelisest Apache installatsiooni tomimimisest. Selle programmi peaülesanne on näidata palju päringuid sekundis see Apache server on võimeline ära täitma.

Ab erinevad võimalused

ab [ -A kasutajanimi:parool ] [ -b aknasuurus ] [ -c päringute_arv ] [ -C küpsise_nimi=väärtus ] [ -d ] [ -e csv-fail ] [ -f protokoll ] [ -g gnuplot-fail ] [ -h ] [ -H kohaldatud_päis ] [ -i ] [ -k ] [ -n päringute_arv ] [ -p POST-fail ] [ -P proksi-kasutajanimi:parool ] [ -q ] [ -r ] [ -s ] [ -S ] [ -t ajapiirang ] [ -T sisu_tüüp ] [ -u PUT_fail ] [ -v verbosity] [ -V ] [ -w ] [ -x <table>-atribuudid ] [ -X proksi[:port] ] [ -y <tr>-atribuudid ] [ -z <td>-atribuudid ] [ -Z šifrikomplekt [http://]hostinimi[:port]/rada

  • -A kasutajanimi:parool - Saab anda ette BASIC mandaadid. Kasutajanimi ja parool on eraldatud ühe kooloniga (:) ning saadedaks ''base64'' kodeeringus. See sõne saadetakse isegi siis kui kasutaja sellist argumenti ära ei määra.
  • -b aknasuurus - Määrab ära TCP saatmis/vastuvõtmis puhvri suuruse (baitides).
  • -c päringute_arv - Saab ette anda mitu päringut korraga saadetakse. Vaikimisi on üks päring korraga.
  • -C küpsise_nimi=väärtus - Lisab küpsise rea päringule. Selle argumendi formaat on tavaliselt nimi=väärtus. Seda atribuuti on võimalik mitu seada.
  • -d - Mitte näidata percentage served within XX [ms] tabelit. Pärandsüsteemide toeks.
  • -e csv-fail - Kirjutab CSV faili, mis sisaldab palju kulus iga individuaalse protsendi (1-100%) päringute täitmiseks aega (millisekundites).
  • -f protokoll - Saab ära määrata mis SSL/TLS protokolli kasutada (SSL2, SSL3, TLS1 või ALL).
  • -g gnuplot-fail - Kirjutab kõik mõõdetud tulemused gnuplot ehk TSV (väärtused tabeldamisega eraldatud) faili. Seda faili on väga lihtne importida erinevatesse programmidesse nagu Gnuplot, IDL, Mathematica, Igor või isegi Excel. Veergude pealkirjad on iga rea alguses.
  • -h - Näitab kasutus informatsiooni.
  • -H kohaldatud_päis - Lisab juurde päiseid. See argument tavaliselt lisatakse valiidse HTTP päisena sisaldades kooloniga eraldatud välja-väärtuse paari (näiteks: "Accept-Encoding: zip/zop;8bit").
  • -i - GET päringu asemel tehakse HEAD päringuid.
  • -k - Võimaldab HoiaElus (KeepAlive) funktsiooni (Näiteks teeb mitu päringut samas HTTP sessioonis). Vaikimisi ei ole see võimaldatud.
  • -n päringute_arv - Mitu päringut tehakse selle reeperdamissessiooni vältel. Vaikimisi on ainult üks päring, mis ei anna täielikku ülevaadet serveri jõudlusest.
  • -p POST-fail - POST päringuga saadetavate andmete fail. Sellega peaks samuti ära määrama -T.
  • -P proksi-kasutajanimi:parool - Saab anda ette vajalikud BASIC mandaadid proksi jaoks. Kasutajanimi ja parool on eraldatud ühe kooloniga (:) ning saadedaks base64 kodeeringus. See sõne saadetakse isegi siis kui kasutaja sellist argumenti ära ei määra.
  • -q - Kui töödeldakse rohkem kui 150 päringut siis ab väljastab edenemisnäidu stderr'i iga 10% pärigute kohta. -q lipp keelab need teated ära.
  • -r - Ei lase programmil väljuda, kui saadakse sokli vastvõtu viga (socket receive error).
  • -s - Kasutab tavalise HTTP asemel HTTPS (SSL) protokolli. See lisa on eksperimentaalne ja väga rudimentaarne. Soovitavalt mitte kasutada.
  • -S - Ei kuva mediaani ega standarthälvet ega kuva hoiatus/veateateid kui keskmine ja mediaan erinevad rohekm kui kaks standardhälvet. Pärandsüsteemide toeks.
  • -t ajapiirang - Maksimaalne aeg (sekundites) mis kulutatakse reeperdamissessiooni läbiviimiseks. See implementeerib -n 50000. Seda kasutatakse kui reeperdamine on vaja ära teha mingis kindlas ajavahemikus. Vaikimisi siis ajapiirangut pole seatud.
  • -T sisutüüp - POST andmete päise sisutüüp POST/PUT andmete puhul. Näiteks: application/x-www-form-urlencoded. Vaikimis on text/plain
  • -u PUT_fail - PUT päringuga saadetavad andmed. Samuti tuleb seada argument -T.
  • -v infotase - Määrab palju programm oma tööst teada annab. 4 - prindib informatsiooni päiste kohta. 3 ja kõrgem - prindib veakoodid (404, 200 jne). 2 ja kõrgem - prindib hoiatused ja muu info.
  • -V - Näitab versiooni ja väljub programmist.
  • -w - Väljastab tulemused HTML tabelitesse. Vaikimisi tabel on kaks veergu lai ning valge tagataustaga.
  • -x <table>-atribuudid - Sõne mida kasutatakse tabeli atribuutitena. Need sisestatakse <table siia >
  • -X proksi[:port] - Määrab proksiserveri ja selle pordi.
  • -y <tr>-atribuudid - Sõne <tr> atribuutideks.
  • -z <td>-atribuudid - Sõne <td> atribuutideks.
  • -Z šifferkomplekt - Määrab ära SSL/TLS šifferkomplekti. (Loe rohkem openssl šifritest).

Puugid

Programmis on mitmeid staatiliselt deklareeritud kindla suurusega puhvreid. Võttes arvesse veel laiska käsurea argumentide parserit, saabuvaid vastusepäised serverist ja teistest välistest sisenditest - kõik see võib ohustada programmi effektiivset tööd.

Programm ei toeta täielikult HTTP/1.x. Ta suudab töödelda ainult mõningaid oodatud forme ja vastuseid. Liigne strstr(3) kasutamine, mis tuleb esile profiili alguses, mis omakorda võib viidata jõudluse probleemile (näiteks: Mõõdetakse serveri asemel ab enda jõudlusvõimet).

Installeerimine

Ab'd üksiku pakettina installeerida ei saa, kuid ta sisaldub pakis apache2-utils.

sudo apt-get install apache2-utils

Samuti tuleb ab ka kaasa, kui installeerida Apache veebiserver.

sudo apt-get install apache2

Näide

Toodud näide on teostatud Ubuntu Server 11.10 (32-bit) operatsioonisüsteemiga.

Jooksutame ab'd neti.ee veebiserveri vastu päringuid tegema. Seame argumendid nii et tehakse 100 päringut ja korraga 5 päringut.

ab -n 100 -c 5 http://www.neti.ee/

Tulemuseks saame sellised andmed (eestikeelsed kommentaarid lisatud):

This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.neti.ee (be patient).....done


Server Software:        Apache                                             - Serveri tarkvara.
Server Hostname:        www.neti.ee                                        - Serveri hostinimi.
Server Port:            80                                                 - Port millega ühendust võeti.

Document Path:          /                                                  - Mis aadressile täpselt päringuid tehti (hetkel juurkataloogile).
Document Length:        38830 bytes                                        - Dokumendi suurus. 

Concurrency Level:      5                                                  - Korraga tehtavate päringute arv (saab määrata -c argumendiga)
Time taken for tests:   9.193 seconds                                      - Kaua tesimine kokku aega võttis.
Complete requests:      100                                                - Õnnestunus päringute arv.
Failed requests:        0                                                  - Ebaeõnnestunud päringute arv.
Write errors:           0                                                  - Ebaõnnestunud kirjutamised.
Total transferred:      3914000 bytes                                      - Mitu baiti andmeid edastati.
HTML transferred:       3883000 bytes                                      - Mitu baiti HTML'i edastati.
Requests per second:    10.88 [#/sec] (mean)                               - Keskmine pärigute arv sekundis.
Time per request:       459.671 [ms] (mean)                                - Keskmine päringu täitmise aeg (kui -c argument sai määratud, siis nende päringute summaarne täitmise aeg).
Time per request:       91.934 [ms] (mean, across all concurrent requests) - Keskmine ühe päringu täitmise aeg (kui -c argument sai määratud, siis nende päringute individuaalne täitmise aeg).
Transfer rate:          415.76 [Kbytes/sec] received                       - Edastuskiirus.

Connection Times (ms)                                                      - Ühenduse ajad millisekundites.
              min  mean[+/-sd] median   max                                - Minimaalne, keskmine, [+-standarthälve], mediaan, maksimaalne.
Connect:       23   42  11.9     42      75                                - Ühenduse saavutamise aeg.
Processing:   220  411 152.2    362    1026                                - Töötlemise aeg.
Waiting:       26   49  18.3     46     165                                - Ootamise aeg.
Total:        263  452 152.7    406    1065                                - Kogu aeg.

Percentage of the requests served within a certain time (ms)               - Mingi protsentuaalse osa pärigute tegemise jaoks kulunud aeg (ms) (-d lipuga seda tabelit ei näidata).
  50%    406
  66%    474
  75%    503
  80%    523
  90%    683
  95%    771
  98%   1017
  99%   1065
 100%   1065 (longest request)

Tulemuseks näitab, et keskmine päringu täitmise aeg oli 452 ms +- 152.7 usaldusväärsusega. Kõige pikem vastamise aeg oli 1065 ms.

Alati peab olema ettevaatlik kui päringuid saadetakse võõrasse veebiserverisse, kuna seda võib lugeda DDoS rünnakuks (palju päringuid samalt kliendilt).

Kasutatud kirjandus

Autor

Tambet Liiv A22 2011