Ab: Difference between revisions
Created page with 'kirjutab Tambet Liiv A22 -2011' |
No edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
=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= | |||
'''<nowiki>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</nowiki>''' | |||
<br /> | |||
*'''-A kasutajanimi:parool''' - <nowiki>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.</nowiki> | |||
*'''-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''<nowiki>'i</nowiki> 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 <nowiki><table></nowiki>-atribuudid''' - Sõne mida kasutatakse tabeli atribuutitena. Need sisestatakse <nowiki><table siia ></nowiki> | |||
*'''-X proksi[:port]''' - Määrab proksiserveri ja selle pordi. | |||
*'''-y <nowiki><tr></nowiki>-atribuudid''' - Sõne <nowiki><tr></nowiki> atribuutideks. | |||
*'''-z <nowiki><td></nowiki>-atribuudid''' - Sõne <nowiki><td></nowiki> 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''. | |||
<pre>sudo apt-get install apache2-utils</pre> | |||
Samuti tuleb ab ka kaasa, kui installeerida Apache veebiserver. | |||
<pre>sudo apt-get install apache2</pre> | |||
=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. | |||
<pre>ab -n 100 -c 5 http://www.neti.ee/</pre> | |||
Tulemuseks saame sellised andmed (eestikeelsed kommentaarid lisatud): | |||
<pre>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)</pre> | |||
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= | |||
*http://stackoverflow.com/questions/66606/what-package-includes-ab-the-apache-server-benchmarking-tool-in-ubuntu | |||
*http://www.php-developer.org/apachebench-tutorial-ab-testing-tool-example-in-ubuntu-lucid-lynx/ | |||
*http://httpd.apache.org/docs/2.0/programs/ab.html | |||
*man ab | |||
=Autor= | |||
Tambet Liiv | |||
A22 | |||
2011 | |||
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]] |
Latest revision as of 15:33, 25 November 2011
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
- http://stackoverflow.com/questions/66606/what-package-includes-ab-the-apache-server-benchmarking-tool-in-ubuntu
- http://www.php-developer.org/apachebench-tutorial-ab-testing-tool-example-in-ubuntu-lucid-lynx/
- http://httpd.apache.org/docs/2.0/programs/ab.html
- man ab
Autor
Tambet Liiv A22 2011