AB is een afkorting voor ApacheBench.
Het ab-commando creëert meerdere gelijktijdige toegangsthreads om te simuleren dat meerdere bezoekers tegelijkertijd een URL-adres benaderen. De testdoelen zijn URL-gebaseerd, waardoor het zowel apache-belastingsstress als andere webserver-stressfactoren zoals nginx, lighthttp, tomcat, IIS, enzovoort kan testen.
Het ab-commando stelt lage eisen voor de computer die de belasting toedient, en het neemt niet veel CPU of geheugen in beslag. Het zal echter een enorme belasting op de doelserver veroorzaken, en het principe lijkt op CC-aanvallen. Je moet ook goed letten op het zelf testen en gebruiken, anders krijg je te veel belasting tegelijk. Het kan ervoor zorgen dat de doelserver zonder middelen komt te zitten, en in ernstige gevallen zelfs een crash veroorzaakt.
1. Introductie tot Apache Bench
ApacheBench is een web-stresstesttool die wordt geleverd met Apache-servers, afgekort als ab. AB is ook een commandoregeltool met lage native eisen voor het initiëren van payloads, en veel gelijktijdige toegangsthreads kunnen worden aangemaakt volgens het ab-commando, waarbij meerdere bezoekers simuleren die tegelijkertijd een bepaald URL-adres benaderen, zodat het kan worden gebruikt om de belastingdruk van de doelserver te testen. Over het algemeen is de AB-tool klein en eenvoudig, snel te leren en kan het de basisprestatie-indicatoren leveren die je nodig hebt, maar er zijn geen grafische resultaten en kunnen niet worden gemonitord.
2. Apache Bench installatie
Eerst moet je de Apache-server installeren en het adres downloaden:De hyperlink-login is zichtbaar.,
Mijn computer is een win10 64-bit systeem, dus ik heb "httpd-2.4.33-win64-VC15.zip" gedownload., link:De hyperlink-login is zichtbaar.
Het wordt aanbevolen om de nieuwste versie te downloaden, omdat oudere versies van ab de -r-parameter niet ondersteunen.
3. Gebruik van Apache Bench
Begrijp de parameters
Parameterbeschrijving: Formaat: ab [opties] [http://]hostname[:p ort]/pad
-n verzoeken Aantal verzoeken uit te voeren //Het totaal aantal verzoeken dat in deze test wordt gestart -c gelijktijdigheid Aantal meerdere verzoeken om te doen // Aantal verzoeken (of gelijktijdigheid) dat tegelijk wordt gegenereerd -t tijdslimiet Seconden tot maximaal. Wacht op antwoorden //Het maximale aantal seconden dat een test standaard wordt uitgevoerd. -r Niet uitgaan bij socket ontvangsfouten. Gooi een uitzondering om de testtaak voort te zetten -p postbestand bestand met gegevens naar POST // Een bestand met gegevens die POST moeten zijn, in een bestandsformaat zoals "p1=1&p2=2". De gebruikswijze is -p 111.txt
-T content-type Content-type header voor POSTing De Content-type header die voor de POST-gegevens wordt gebruikt, zoals -T "application/x-www-form-urlencoded". (co-p) -v omvang hoeveel probleemoplossingsinformatie moet je afdrukken Stel het detailniveau in om informatie weer te geven – een waarde van 4 of hoger toont headerinformatie, een waarde van 3 of hoger toont een responscode (404, 200, enz.), en een waarde van 2 of hoger geeft waarschuwingen en andere informatie aan. -V toont het versienummer en vertrekt. -C-attribuut Voeg cookie toe, bijvoorbeeld. -C "c1=1234,c2=2,c3=3" (herhaalbaar) -C cookie-naam=waarde Voeg een cookie toe aan de request:-regel. De typische vorm is een parameterpaar name=waarde. Deze parameter kan worden herhaald, gedeeld door een komma. Tip: Je kunt het sessie-implementatieprincipe gebruiken om de JSESSIONID-parameter door te geven om de functie van het onderhouden van de sessie te bereiken, zoals -C "c1=1234, c2=2, c3=3, JSESSIONID=FF056CD16DA9D71CB131C1D56F0319F8". -w Print out resultaten in HTML-tabellen // Output results in HTML-tabelformaat. Standaard is het een tabel met twee kolommen breed op een witte achtergrond. -Ik gebruik HEAD in plaats van GET -x attributen String om in te voegen als tabelattributen -y attributen String om in te voegen als tr-attributen -z attributen String om in te voegen als td of th attributen -H attribuut Voeg willekeurige kopregel toe, bijvoorbeeld. 'Accept-Encoding: gzip' Ingevoegd na alle normale headerregels. (herhaalbaar) -Een attribuut Voeg Basis WWW-authenticatie toe, de attributen zijn een dubbele dubbele naam, gebruikersnaam en wachtwoord gescheiden. -P-attribuut Voeg Basic Proxy Authentication toe, de attributen zijn een dubbele dubbele naam, gebruikersnaam en wachtwoord. -X proxy:poort Proxyserver en poortnummer te gebruiken -V Printversienummer en uitgang -k Gebruik HTTP KeepAlive-functie -d Geen geserveerde percentielen tonen. -S Geen betrouwbaarheidsschattingen en waarschuwingen tonen. -g bestandsnaam Voer verzamelde gegevens uit naar het gnuplot-formaat bestand. -e bestandsnaam Output CSV-bestand met percentages bediend -h Weergave gebruiksinformatie (dit bericht) Er zijn veel parameters, meestal kunnen we -c en -n parameters gebruiken. Bijvoorbeeld:
Pak de "httpd-2.4.33-win64-VC15.zip uit", ga naar \Apache24\bin en start deze met de cmd-commandoregel, zoals getoond in de onderstaande figuur:
SSL niet gecompileerd in; geen https-ondersteuning: SSL is niet gecompileerd in; Er is geen https-ondersteuning, wat betekent dat de website geen https ondersteunt.
Testresultaten:
C:\Users\itsvse_pc\Downloads\httpd-2.4.33-win64-VC15\Apache24\bin>ab -c 10 -n 1000 https://www.itsvse.com SSL niet gecompileerd in; Geen HTTPS-ondersteuning
C:\Users\itsvse_pc\Downloads\httpd-2.4.33-win64-VC15\Apache24\bin>ab -c 10 -n 1000 http://www.itsvse.com/ Dit is ApacheBench, versie 2.3 <$Revision: 1826891 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd,De hyperlink-login is zichtbaar. Gelicentieerd aan The Apache Software Foundation,De hyperlink-login is zichtbaar.
Benchmarkingwww.itsvse.com(Wees geduldig) 100 verzoeken afgerond 200 verzoeken afgerond 300 verzoeken afgerond 400 verzoeken afgerond 500 verzoeken afgerond 600 verzoeken voltooid 700 verzoeken afgerond 800 verzoeken afgerond 900 verzoeken afgerond 1000 verzoeken afgerond 1000 verzoeken afgerond
Serversoftware: Serverhostnaam: www.itsvse.com Serverpoort: 80
Documentpad: / Documentlengte: 178 bytes
Gelijktijdig niveau: 10 Tijd voor tests: 44,916 seconden Volledige verzoeken: 1000 Mislukte verzoeken: 0 Niet-2xx reacties: 1000 Totaal overgedragen: 349.000 bytes HTML overgedragen: 178000 bytes Verzoeken per seconde: 22,26 [#/sec] (gemiddeld) Tijd per verzoek: 449.164 [ms] (gemiddeld) Tijd per verzoek: 44,916 [ms] (gemiddeld, over alle gelijktijdige verzoeken) Overdrachtssnelheid: 7,59 [Kbytes/sec] ontvangen
Verbindingstijden (ms) min gemiddelde[+/-SD] mediaan max
Connect: 32 45 60.1 37 1439
Processing: 35 401 185.6 356 1795
Waiting: 34 245 199.6 228 1791
Total: 69 446 195.4 397 1830
Percentage van de verzoeken die binnen een bepaalde tijd (ms) worden verzonden 50% 397 66% 415 75% 439 80% 461 90% 535 95% 623 98% 1563 99% 1784 100% 1830 (langste verzoek) Parameteranalyse:
Documentpad: Testpagina Documentlengte: De paginagrootte Gelijktijdigheidsniveau: Het aantal gelijktijdig geteste gelijktijdige gelijktijdigheid Tijd die nodig is voor toetsen: De duur van de hele test Volledige verzoeken: Het aantal voltooide verzoeken Mislukte verzoeken: Het aantal mislukte verzoeken Schrijffouten: 0 Totaal overgedragen: De hoeveelheid netwerk die gedurende het proces wordt overgedragen HTML overgedragen: De hoeveelheid HTML-inhoud die tijdens het proces wordt overgedragen Verzoeken per seconde: Een van de belangrijkste metrics, gelijkwaardig aan transacties per seconde in LR, en het gemiddelde tussen haakjes geeft aan dat dit een gemiddelde is Tijd per verzoek: De twee belangrijkste metrics, gelijk aan de gemiddelde responstijd van transacties in LR, geven in haakjes aan dat dit een gemiddelde is Tijd per verzoek: Het gemiddelde van de daadwerkelijke uitvoeringstijd voor elk verbindingsverzoek Overdrachtssnelheid: Gemiddeld verkeer per seconde op het netwerk, wat kan helpen het probleem van overmatig netwerkverkeer dat lange responstijden veroorzaakt uit te sluiten
|