Dit is het commando httperf dat kan worden uitgevoerd in de gratis hostingprovider van OnWorks met behulp van een van onze meerdere gratis online werkstations zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator
PROGRAMMA:
NAAM
httperf - HTTP-prestatiemeetinstrument
KORTE INHOUD
httperf [--add-header S] [--burst-lengte N] [--cliënt I/N] [--sluiten-met-reset]
[-d|--debuggen N] [--mislukking-status N] [-h|--help] [--varken] [--http-versie S] [--max-
verbindingen N] [--max-doorgesluisde-oproepen N] [--methode S] [--geen-host-hdr] [--aantal oproepen N] [--aantal-
cons N] [--punt uit [d|u|e]T1[,T2,--haven N] [--print-antwoord [hoofd|lichaam]] [--afdrukken-
te vragen [hoofd|lichaam]] [--tarief X] [--recv-buffer N] [--opnieuw proberen bij mislukking] [--verzendbuffer N]
[--server S] [--server naam S] [--sessie-cookie] [--ssl] [--ssl-cijfers L] [--ssl-geen-
hergebruiken] [--denk-time-out X] [--time-out X] [--uri S] [-v|--uitgebreid] [-V|--versie] [--wlog
y|n,F] [--wss N,N,X] [--wsslog N,X,F] [--wset N,X]
PRODUCTBESCHRIJVING
httperf is een hulpmiddel om de prestaties van de webserver te meten. Het spreekt het HTTP-protocol beide in
zijn HTTP/1.0- en HTTP/1.1-smaken en biedt een verscheidenheid aan werklastgeneratoren. Terwijl
actief, houdt het een aantal prestatiestatistieken bij die in het formulier zijn samengevat
van statistieken die worden afgedrukt aan het einde van een testrun. De meest elementaire werking van
httperf is om een vast aantal HTTP GET-verzoeken te genereren en te meten hoeveel antwoorden
(antwoorden) kwam terug van de server en met welk tempo de antwoorden kwamen.
BELANGRIJK: Om de juiste resultaten te verkrijgen, is het noodzakelijk om er maximaal één uit te voeren httperf
per klantmachine. Ook moeten er zo min mogelijk achtergrondprocessen allebei aan staan
de client- en servermachines.
Voorbeelden
httperf --hog --server www
Dit commando veroorzaakt httperf om een verbinding te maken met host www, stuur een verzoek voor
het hoofddocument (http://www/), ontvang het antwoord, verbreek de verbinding en dan
enkele prestatiestatistieken afdrukken.
httperf --hog --server www --num-conns 100 --ra 10 --time-out 5
Zoals hierboven, behalve dat er in totaal 100 verbindingen worden gemaakt en dat verbindingen
worden gemaakt met een vaste snelheid van 10 per seconde. Merk op dat de optie ``--tarief'' is geweest
afgekort tot ``--ra''.
httperf --hog --server=www --wsess=10,5,2 --rate 1 --time-out 5
Oorzaken httperf om in totaal 10 sessies te genereren met een snelheid van 1 sessie per
seconde. Elke sessie bestaat uit 5 oproepen met een tussenruimte van 2 seconden.
httperf --hog --server=www --wsess=10,5,2 --rate=1 --timeout=5 --ssl
Zoals hierboven, behalve dat httperf contactserver www via SSL op poort 443 (de
standaardpoort voor SSL-verbindingen).
httperf --hog --server www --wsess=10,5,2 --rate=1 --timeout=5 --ssl
--ssl-ciphers=EXP-RC4-MD5:EXP-RC2-CBC-MD5 --ssl-no-reuse --http-version=1.0
Zoals hierboven, behalve dat httperf zal de server laten weten waar hij alleen uit kan kiezen
twee coderingssuites (EXP-RC4-MD5 of EXP-RC2-CBC-MD5); verder, httperf zal gebruiken
HTTP-versie 1.0 die voor elk verzoek een nieuwe TCP-verbinding vereist. Ook SSL
sessie-ID's worden niet opnieuw gebruikt, dus het hele proces voor het tot stand brengen van een SSL-verbinding
(bekend als de SSL-handshake) vindt plaats voor elke verbinding.
OPTIES
De werking van httperf kan worden bestuurd via een aantal opties. Het gereedschap ondersteunt
zowel korte (één teken) als lange (willekeurige lengte) optienamen. Korte opties zijn
voorafgegaan door een enkel streepje (-), lange opties door een dubbel streepje (--). Meerdere
korte opties kunnen worden gegroepeerd (bijv. ``-vV'' is gelijk aan ``-v -V'') en lang
opties kunnen worden afgekort zolang ze uniek blijven. Parameters voor opties kunnen zijn
gespecificeerd door de lange optienaam te volgen met een gelijkteken en de parameter
waarde (bijv. --uitbarsting=10) of door de optienaam en -waarde te scheiden met witruimte (bijv.
--uitbarsting 10).
--add-header=S
Specificeert om tekenreeks op te nemen S als een extra verzoekkop. Het is nodig om
specificeer expliciet de afsluitende regelterugloop/regelinvoerreeks. Dit kan zijn
gedaan met behulp van de escape-reeks ``\n''. Hierdoor is opnemen mogelijk
meerdere aanvraagheaders. Bijvoorbeeld ``--add-header "Referer: foo\nAuth:
secret\n"'' zou twee verzoekheaders (``Referer'' en ``Auth'') toevoegen aan elk
verzoek. Andere ondersteunde escape-reeksen zijn ``\r'' (carriage-return), ``\a''
(line-feed), ``\\'' (backslash) en ``\N'' waarbij N de code is van het teken dat moet worden
ingevoegd (in octaal).
--burst-lengte=N
Specificeert de lengte van bursts. Elke burst bestaat uit N oproepen naar de server. De
de exacte betekenis van deze parameter is afhankelijk van de werklastgenerator. Voor regelmatig
vraaggerichte workloads, zie de beschrijving van optie --wss.
--geen-host-hdr
Geeft aan dat de header "Host:" niet moet worden opgenomen bij het uitgeven van een HTTP
verzoek.
--aantal oproepen.
Zie de beschrijving van de optie voor sessiegerichte workloads --wss.
--klant=I/N
Specificeert dat de machine httperf draait op zijn client I op een totaal van N
clients. I moet in het bereik van 0 tot zijn N-1. Enkele werklastgeneratoren
(Bv --wset) gebruik de klantidentiteit als een biaswaarde om ervoor te zorgen dat niet alle
clients genereren perfect identieke workloads. Bij het uitvoeren van een test dat
meerdere clientmachines omvat, is het over het algemeen een goed idee om dit te specificeren
optie.
--sluiten-met-reset
Verzoekt dat httperf sluit TCP-verbindingen door een RESET te sturen in plaats van te gaan
via de normale handshake voor het afsluiten van de TCP-verbinding. Het inschakelen van deze optie kan
nadelige gevolgen hebben, zoals gegevensbeschadiging, vastzittende TCP-besturingsblokken of verkeerde
resultaten. Om deze reden mag de optie alleen absoluut worden gebruikt
noodzakelijk en zelfs dan mag het niet worden gebruikt, tenzij de implicaties ervan volledig zijn
begrepen.
-d=N
--debuggen=N
Stel foutopsporingsniveau in op N. Grotere waarden van N zal resulteren in meer output.
--failure-status=N
Geeft aan dat een HTTP-antwoordstatuscode van N moet als een mislukking worden behandeld
(d.w.z. behandeld alsof er bijvoorbeeld een time-out is opgetreden voor het verzoek). Bijvoorbeeld met
``--foutstatus=504'' reacties met een HTTP-status van ``504 Gateway Time-out''
als mislukkingen zouden worden beschouwd. Let op: deze optie wordt momenteel ondersteund
alleen sessieworkloads (zie de --wss en --wsslog opties).
-h
--help Drukt een samenvatting af van de beschikbare opties en hun parameters.
--varken Deze optie vraagt om zoveel TCP-poorten te gebruiken als nodig is. Zonder dit
keuze, httperf is doorgaans beperkt tot het gebruik van kortstondige poorten (in het bereik van
1024 tot 5000). Dit beperkte poortbereik kan snel een knelpunt worden
over het algemeen een goed idee om deze optie te specificeren voor serieus testen. Dit ook
optie moet worden opgegeven bij het meten van NT-servers, omdat het een TCP vermijdt
incompatibiliteit tussen NT- en UNIX-machines.
--http-versie=S
Specificeert de versietekenreeks die moet worden opgenomen in de verzoeken die naar de
server. Standaard wordt versiereeks ``1.1'' gebruikt. Deze optie kan worden ingesteld op
``1.0'' om het genereren van HTTP/1.0-verzoeken te forceren. Zet deze optie op any
waarde anders dan ``1.0'' of ``1.1'' kan leiden tot ongedefinieerd gedrag.
--max-verbindingen=N
Specificeert dat hoogstens N verbindingen worden voor elke sessie geopend. Deze optie is
zinvol in combinatie met opties --wss en --wsslog alleen.
--max-piped-oproepen=N
Specificeert dat hoogstens N pijplijn gesprekken worden uitgegeven op elke verbinding. Dit
optie is zinvol in combinatie met opties --wss en --wsslog alleen.
--methode=S
Specificeert de methode die moet worden gebruikt bij het uitgeven van een HTTP-verzoek. Als dit
optie niet is opgegeven, wordt de GET-methode gebruikt. De methode S kan willekeurig zijn
string, maar is meestal een van GET, HEAD, PUT, POST, etc.
--aantal oproepen=N
Deze optie is alleen zinvol voor aanvraaggeoriënteerde workloads. Het specificeert de
totaal aantal oproepen dat moet worden verzonden op elke verbinding voordat deze wordt gesloten. Als N is
groter dan 1, moet de server blijvende verbindingen ondersteunen. De standaardwaarde
voor deze optie is 1. Als --burst-lengte is ingesteld op B, dan de N oproepen worden uitgegeven
in uitbarstingen van B pijplijngesprekken elk. Het totale aantal van dergelijke bursts zal dus zijn
N / B (per aansluiting).
--aantal-conns=N
Deze optie is alleen zinvol voor aanvraaggeoriënteerde workloads. Het specificeert de
totaal aantal verbindingen om te maken. Op elke verbinding worden oproepen uitgegeven als
gespecificeerd door opties --aantal oproepen en --burst-lengte. Een test stopt zodra de N
verbindingen zijn voltooid of mislukt. Een verbinding wordt geacht te hebben
mislukt als enige activiteit op de verbinding geen vooruitgang boekt voor meer
dan de tijd die is opgegeven door de time-outopties --time-out en --denk-time-out. De
standaardwaarde voor deze optie is 1.
--periode=[D]T1[,T2]
Specificeert het tijdsinterval tussen het maken van verbindingen of sessies.
Verbindingen worden standaard gemaakt, sessies indien optie --wss or --wsslog heeft
gespecificeerd. Deze verbinding/sessie kan ook ``interarrival time'' zijn
gespecificeerd door de --tarief optie, hoewel er meer flexibiliteit beschikbaar is met
--periode. De D parameter specificeert de interarrival time distributie. Als
weggelaten of ingesteld op ``d'', wordt een deterministische (dwz vaste) periode gebruikt zoals gespecificeerd
per parameter T1 in eenheden van seconden. Als D is ingesteld op ``e'', een exponentiële (d.w.z.
Poisson) verdeling wordt gebruikt met een gemiddelde tussenaankomsttijd van T1. Eindelijk, als D
is ingesteld op ``u'', een uniforme verdeling over het interval [T1,T2) wordt gebruikt voor de
interne aankomst tijd. In alle gevallen resulteert een periode van 0 in verbindingen of sessies
opeenvolgend worden gegenereerd (een nieuwe verbinding/sessie wordt gestart zodra de
vorige voltooid). De standaardwaarde voor deze optie is 0. Merk op dat
specificeren, bijvoorbeeld --tarief=5 is gelijk aan specificeren --periode=d0.2 or
--periode=0.2. Door te specificeren --periode=u1,3, zullen de interarrivaltijden willekeurig zijn
gekozen uit het interval tussen 1 en 3 seconden. De specifieke volgorde van
(pseudo-)willekeurige tussenaankomsttijden zijn vanaf één identiek httperf ren naar een andere als
zolang de waarden voor de --punt uit en --cliënt opties zijn identiek.
--poort=N
Deze optie specificeert het poortnummer N waarop de webserver luistert
HTTP-verzoeken. Standaard, httperf gebruikt poortnummer 80.
--print-antwoord[=[hoofd|lichaam]]
Verzoekt om het afdrukken van de antwoordkoppen, hoofdtekst en samenvatting. De uitvoer is
gericht op standaarduitvoer. Koptekstregels van het antwoord worden voorafgegaan door "RH", de hoofdtekst van het antwoord
regels worden voorafgegaan door "RB", en de samenvatting op antwoordgrootte wordt voorafgegaan door "RS". De
prefix wordt gevolgd door een serienummer dat een unieke identificatie is van de oproep die de
antwoordregel is voor en een dubbele punt (":") die het begin van de markeert
eigenlijke antwoordregel. Geef het argument door om alleen antwoordkoppen af te drukken hoofd deze
keuze. Geef het argument door om alleen de hoofdtekst van het antwoord af te drukken lichaam naar deze optie.
--afdrukverzoek[=[hoofd|lichaam]]
Verzoekt om het afdrukken van de aanvraagheaders, body (indien aanwezig) en
samenvatting. De uitvoer wordt naar de standaarduitvoer geleid. Verzoekkopregels zijn
voorafgegaan door "SH", worden hoofdtekstregels van het verzoek voorafgegaan door "SB", en de samenvatting van het verzoek
wordt voorafgegaan door "SS". Het voorvoegsel wordt gevolgd door het serienummer van de oproep en een
dubbele punt (":") teken dat het begin van de daadwerkelijke antwoordregel markeert. Printen
vraag alleen headers aan, geef argument door hoofd naar deze optie. Om alleen de
vraag body, passeer argument lichaam naar deze optie.
--tarief=X
Specificeert de vaste snelheid waarmee verbindingen of sessies worden gemaakt. Verbindingen
worden standaard aangemaakt, sessies indien optie --wss or --wsslog is
opgegeven. In beide gevallen resulteert een tarief van 0 in verbindingen of sessies
opeenvolgend gegenereerd (een nieuwe sessie/verbinding wordt gestart zodra de
vorige voltooid). De standaardwaarde voor deze optie is 0.
--recv-buffer=N
Specificeert de maximale grootte van de socketontvangstbuffers die worden gebruikt om HTTP te ontvangen
antwoorden. Standaard is de limiet 16 KB. Een kleinere waarde kan het geheugen helpen
beperkte klanten terwijl een grotere waarde nodig kan zijn bij het communiceren met
een server via een verbinding met hoge bandbreedte en hoge latentie.
--opnieuw proberen bij mislukking
Deze optie is alleen zinvol voor sessieworkloads (zie het --wss en
--wsslog opties). Indien opgegeven, wordt een aanroep die resulteert in een foutreactie (zoals
gedefinieerd door de --mislukking-status optie) wordt onmiddellijk opnieuw geprobeerd in plaats van te veroorzaken
de sessie mislukken.
--verzendbuffer=N
Specificeert de maximale grootte van de socketverzendbuffers die worden gebruikt om HTTP-aanvragen te verzenden.
Standaard is de limiet 4KB. Een kleinere waarde kan geheugenbeperkte clients helpen
terwijl een grotere waarde nodig kan zijn bij het genereren van grote verzoeken aan een server
verbonden via een verbinding met hoge bandbreedte en hoge latentie.
--server=S
Specificeert de IP-hostnaam van de server. Standaard is de hostnaam ``localhost''
gebruikt. Deze optie moet altijd worden opgegeven, omdat dit over het algemeen geen goed idee is
laat de client en de server op dezelfde machine draaien.
--servernaam=S
Specificeert de (standaard) servernaam die wordt weergegeven in de "Host:"-header van elke
verzoek verzonden door httperf. Zonder deze optie wordt de hostnaam (of het IP-adres)
gespecificeerd door optie --server wordt in plaats daarvan gebruikt.
--sessie-cookie
Wanneer deze optie is ingeschakeld, wordt cookiebeheer per sessie ingeschakeld.
Dit betekent dat als een antwoord op een verzoek is gegenereerd door session X
bevat een cookie, dan worden alle toekomstige verzoeken per sessie verzonden X zal dit opnemen
koekje ook. Op dit moment is de cookiebeheerder in httperf ondersteunt slechts één cookie
per sessie. Als een tweede cookie wordt ontvangen, overschrijft de nieuwe cookie de
bestaande en een waarschuwingsbericht wordt afgedrukt als ``--debug 1'' is ingeschakeld.
--ssl Specificeert dat alle communicatie tussen httperf en de server moet de
Secure Sockets Layer (SSL)-protocol. Deze optie is alleen beschikbaar als httperf was
gecompileerd met ingeschakelde SSL-ondersteuning.
--ssl-cijfers=L
Deze optie is alleen zinvol als SSL in gebruik is (zie --ssl keuze). Deze optie
specificeert de lijst L van coderingssuites dat httperf kan gebruiken bij het onderhandelen over een veilige
verbinding met de server. Als de lijst meer dan één coderingssuite bevat, wordt het
cijfers moeten worden gescheiden door een dubbele punt. Als de server geen van de
vermelde coderingssuites, zal het tot stand brengen van de verbinding mislukken en httperf zal verlaten
onmiddellijk. Als deze optie niet is opgegeven wanneer de --ssl optie is dan aanwezig
httperf gebruikt alle SSLv3-coderingssuites die door de onderliggende SSL worden geleverd
bibliotheek.
--ssl-geen-hergebruik
Deze optie is alleen zinvol als SSL en sessies in gebruik zijn (zie --ssl, --wss,
--wsslog). Wanneer een SSL-verbinding tot stand is gebracht, ontvangt de client een sessie
identifier (sessie-ID) van de server. Bij volgende SSL-verbindingen wordt de client
gebruikt dit sessie-ID normaal gesproken opnieuw om de kosten van het herhalen van het
(langzame) SSL-handshake om een nieuwe SSL-sessie tot stand te brengen en een andere sessie-ID te verkrijgen
(zelfs als de client probeert een sessie-ID opnieuw te gebruiken, kan de server het
klant om opnieuw te onderhandelen over een sessie). Standaard httperf hergebruikt de sessie-ID opnieuw
alle verbindingen in een sessie. Als de --ssl-geen-hergebruik optie is dan van kracht
httperf zal de sessie-ID niet hergebruiken, en de volledige SSL-handshake zal dat wel zijn
uitgevoerd voor elke nieuwe verbinding in een sessie.
--denk-time-out=X
Specificeert de maximale tijd die de server nodig heeft om te beginnen met het verzenden van het antwoord
voor een bepaald verzoek. Merk op dat deze time-outwaarde wordt toegevoegd aan de normale time-out
waarde (zie optie --time-out). Bij toegang tot statische webinhoud is dit meestal niet het geval
nodig om deze optie te specificeren. Bij het uitvoeren van tests met langlopende
CGI-scripts, kan het nodig zijn om deze optie te gebruiken om grotere respons mogelijk te maken.
keer. De standaardwaarde voor deze optie is nul seconden, wat betekent dat de server
moet kunnen reageren binnen de normale time-outwaarde.
--time-out=X
Specificeert de hoeveelheid tijd X uit die httperf bereid is te wachten op een server
reactie. De time-out wordt opgegeven in seconden en kan een gebroken getal zijn
(Bv --time-out 3.5). Deze time-outwaarde wordt gebruikt bij het tot stand brengen van een TCP
verbinding, bij het verzenden van een verzoek, bij het wachten op een antwoord en bij het ontvangen van een
antwoord. Als tijdens een van deze activiteiten een verzoek geen vooruitgang boekt
binnen de gestelde tijd, httperf beschouwt het verzoek als overleden, sluit het
bijbehorende verbinding of sessie en verhoogt de klant-timo aantal fouten. De
werkelijke time-outwaarde die wordt gebruikt bij het wachten op een antwoord is de som van deze time-out en
de denk-time-out (zie optie --denk-time-out). Standaard is de time-outwaarde
oneindigheid.
--uri=S
Specificeert die URI S moet toegankelijk zijn op de server. Voor een deel van de werkdruk
generatoren (bijv. --wset), specificeert deze optie het voorvoegsel voor de URI's
geopend.
-v
--uitgebreid
puts httperf in de uitgebreide modus. In deze modus wordt extra uitvoer zoals de
individuele voorbeelden van het antwoordpercentage en een histogram over de levensduur van de verbinding worden afgedrukt.
-V
--versie
Drukt de versie af van httperf.
--wlog=B,F
Deze optie kan worden gebruikt om een specifieke reeks URI-toegangen te genereren. Dit is
handig om bijvoorbeeld de toegangen die zijn vastgelegd in een serverlogbestand opnieuw af te spelen.
Parameter F is de naam van een bestand dat de ASCII NUL-gescheiden lijst met URI's bevat
die toegankelijk moet zijn. Als parameter B is ingesteld op ``y'', httperf zal omwikkelen
naar het begin van het bestand bij het bereiken van het einde van de lijst (dus de lijst met URI's
wordt herhaaldelijk geopend). Met B ingesteld op ``n'', stopt de toets uiterlijk
bij het bereiken van het einde van de URI-lijst.
--wss=N1,N2,X
Verzoekt om het genereren en meten van sessies in plaats van individuele verzoeken.
Een sessie bestaat uit een opeenvolging van uitbarstingen die door de gebruiker worden gespreid
tijd. Elke burst bestaat uit een vast aantal L van oproepen naar de server (L is
gespecificeerd door optie --burst-lengte). De oproepen in een burst worden als volgt verzonden:
in eerste instantie wordt een enkele oproep verzonden. Zodra het antwoord op deze eerste oproep is geweest
volledig ontvangen, worden alle resterende oproepen in de burst gelijktijdig verzonden. De
gelijktijdige oproepen worden uitgegeven als pijplijnaanroepen op een bestaande persistent
verbinding of als individuele oproepen op afzonderlijke verbindingen. Of het nu een doorzetter is
verbinding wordt gebruikt, is afhankelijk van het feit of de server op de eerste oproep reageert met een
antwoord dat een titelregel ``Connection: close'' bevat. Als zo'n lijn is
aanwezig, er wordt gebruik gemaakt van aparte aansluitingen.
De optie specificeert de volgende parameters: N1 is het totale aantal sessies
genereren, N2 is het aantal oproepen per sessie, en X is de denktijd van de gebruiker
(in seconden) die opeenvolgende oproepbursts scheidt. Bijvoorbeeld de opties
``--wss=100,50,10 --burst-len 5'' zou resulteren in 100 sessies met een totaal van 50
roept elk. Aangezien elke burst een lengte heeft van 5 oproepen, zijn er in totaal 10 oproepbursts
zou per sessie worden gegenereerd. De denktijd van de gebruiker tussen bursts van oproepen zou zijn
10 seconden. Merk op dat de denktijd van de gebruiker X geeft de tijd aan tussen het ontvangen van de
laatste antwoord van de vorige oproep burst en het verzenden van het eerste verzoek van de
volgende uitbarsting.
Een test met sessies eindigt zodra het gevraagde aantal is bereikt N1 van sessies
zijn mislukt of voltooid. Een eventuele sessie wordt als mislukt beschouwd
bewerking in een sessie duurt langer dan de time-outs gespecificeerd door opties
--time-out en --denk-time-out. Daarnaast mislukt een sessie ook als de server
retourneert een antwoord met een statuscode die overeenkomt met die gespecificeerd door optie --mislukking-
toestand.
--wsesslog=N,X,F
Dit specificeert een generator voor sessiewerkbelasting vergelijkbaar met --wss (lees dat alstublieft
beschrijving eerst). Met --wsslog veel aspecten van gebruikerssessies,
inclusief het aantal en de volgorde van URI's, aanvraagmethode, denktijd en burst-
lengteparameters kunnen worden opgegeven in een invoerbestand F. Twee andere parameters zijn
behouden van --wss, namelijk N, het aantal te starten sessies, en X, the
burst-to-burst gebruikersdenktijd (merk op dat dit een standaardtijd wordt sinds de
Invoer bestand F kan ook de denktijd van de gebruiker per burst specificeren. Een kleine
voorbeeldinvoerbestand kan het gemakkelijkst de instelbare parameters tonen:
# Commentaarregels beginnen met een ``#'' als eerste
# karakter. Regels met alleen witruimte begrenzen
# sessies (meerdere lege regels worden niet gegenereerd
# ``null''-sessies). Alle andere regels specificeren a
# uri-reeks (1 uri per regel). Als de eerste
# teken van de regel is witruimte (bijv. spatie
# of tab), wordt de uri beschouwd als onderdeel van een
# burst die na de vorige wordt uitgezonden
# niet-burst uri.
# sessie 1 definitie (dit is een opmerking)
/foo.html denk=2.0
/afbeelding1.gif
/afbeelding2.gif
/foo2.html method=POST content='Post data'
/afbeelding3.gif
/afbeelding4.gif
# sessie 2 definitie
/foo3.html methode=POST content="Multiline\ndata"
/foo4.html methode=HEAD
De bovenstaande beschrijving specificeert 2 sessies. De eerste sessie begint met een
verzoek om /foo.html. Wanneer het antwoord /foo.html terugkomt, een burst van 2
aanvragen volgen (/pict1.gif en /pict2.gif). Wanneer de laatste van die reacties
wordt ontvangen, wordt er een bedenktijd van twee seconden ingelast voor het volgende verzoek van
/foo2.html wordt uitgegeven. Dit verzoek wordt verzonden als een POST. De geplaatste gegevens kunnen zijn
tussen enkele of dubbele aanhalingstekens. Er kunnen nieuwe regels verschijnen in geposte gegevens
als ``\n'' of als een ``\ ''. Het antwoord /foo2.html wordt gevolgd door een burst
verzoek van /pict3.gif en /pict4.gif, waarmee deze sessie wordt afgesloten. De seconde
sessie wordt enige tijd na de eerste gestart, zoals gespecificeerd door de --tarief or
--punt uit opties.
De tweede sessie bestaat uit 2 verzoeken gescheiden door de standaard denktijd van de gebruiker
zoals gespecificeerd door de X parameter van de --wsslog optie. Als de N parameter van
--wsslog groter is dan het aantal sessies dat is gedefinieerd in het invoerbestand F, dan de
gedefinieerde sessies worden herhaaldelijk gebruikt tot N sessies zijn gemaakt (d.w.z. de
gedefinieerde sessies worden op een round-robin-manier gebruikt).
Men moet het gebruik vermijden --wsslog in combinatie met andere httperf opties die
ook controle over sessiegedrag en werklast-URI's, namelijk --burst-lengte, --wss,
--wlog, en --wset.
--wset=N,X
Deze optie kan worden gebruikt om met een bepaalde snelheid door een lijst met URI's te lopen. Parameter
N specificeert het aantal verschillende URI's dat moet worden gegenereerd en X specificeert
de snelheid waarmee nieuwe URI's worden benaderd. Een tarief van 0.25 zou hetzelfde betekenen
URI zou vier keer achter elkaar worden geopend voordat naar de volgende URI wordt gegaan. Dit
type toegangspatroon is nuttig bij het genereren van een werklast die een relatief
voorspelbare hoeveelheid verkeer in het schijf-I/O-subsysteem van de server (ervan uitgaande dat N
en de geopende bestanden zijn groot genoeg om de buffercache van de server te overschrijden). De
De gegenereerde URI's hebben de vorm voorvoegsel/pad.html, waar voorvoegsel is het URI-voorvoegsel
gespecificeerd door optie --wset en pad wordt als volgt gegenereerd: voor de i-de bestand erin
de werkset opschrijven i in decimaal, voorafgegaan door evenveel nullen
zo nodig om een string te krijgen die evenveel cijfers heeft als N-1. Plaats dan een schuine streep
teken tussen elk cijfer. Bijvoorbeeld het 103e bestand in een werkset
bestaande uit 1024 bestanden zou resulteren in een pad van ``0 / 1 / 0 / 3''. Dus als de URI-
voorvoegsel is /wset1024, dan is de URI waartoe toegang wordt verkregen /wset1024/0/1/0/3.html.
Met andere woorden, de bestanden op de server moeten worden georganiseerd als een 10-voudige boom.
OUTPUT
Dit gedeelte beschrijft de statistische uitvoer aan het einde van elke testrun. De basis
onderstaande informatie wordt onafhankelijk van de geselecteerde werklastgenerator afgedrukt.
Totaal: verbindingen 30000 verzoeken 29997 antwoorden 29997 testduur 299.992 s
Aansluiting rate: 100.0 conn/s (10.0 ms/conn, <=14 gelijktijdige verbindingen)
Aansluiting tijd [Mevr]: min 1.4 gem 3.0 max 163.4 mediaan 1.5 stddev 7.3
Aansluiting tijd [Mevr]: verbind 0.6
Aansluiting lengte [antwoorden/conn]: 1.000
Aanvraag rate: 100.0 verzoek/s (10.0 ms/verzoek)
Aanvraag grootte [B]: 75.0
Antwoorden tarief [antwoorden/s]: min 98.8 gem 100.0 max 101.2 stddev 0.3 (60 monsters)
Antwoorden tijd [Mevr]: respons 2.4 overdracht 0.0
Antwoorden grootte [B]: koptekst 242.0 inhoud 1010.0 voettekst 0.0 (totaal 1252.0)
Antwoorden Status: 1xx=0 2xx=29997 3xx=0 4xx=0 5xx=0
CPU tijd [S]: gebruiker 94.31 systeem 205.26 (gebruiker 31.4% systeem 68.4% totaal 99.9%)
Netto IO: 129.6 KB/s (1.1*10^6 bps)
fouten: totaal 3 client-timo 0 socket-timo 0 connrefused 3 connreset 0
fouten: fd-unavail 0 addrunavail 0 ftab-full 0 andere 0
Er zijn zes groepen statistieken: algemene resultaten (``Totaal''), verbindingsgerelateerd
resultaten (``Connection''), resultaten met betrekking tot de uitgifte van HTTP-verzoeken (``Request''),
resultaten met betrekking tot de antwoorden ontvangen van de server (``Reply''), diversen
resultaten met betrekking tot het gebruik van de CPU (``CPU'') en het netwerk (``Net I/O'') en,
niet in de laatste plaats een samenvatting van de opgetreden fouten (``Errors'').
Totale sectie
In deze sectie wordt samengevat hoeveel TCP-verbindingen zijn geïnitieerd door httperf, hoe
hoeveel verzoeken het heeft verzonden, hoeveel antwoorden het heeft ontvangen en wat de totale test is
duur is geweest. In de bovenstaande voorbeelduitvoer zijn 30,000 verbindingen gemaakt,
Er werden 29,997 verzoeken verzonden en 29,997 antwoorden ontvangen. De duur van
de test duurde bijna precies 5 minuten (300 seconden).
Aansluitsectie:
In dit gedeelte vindt u informatie over TCP-verbindingen die door het hulpprogramma zijn gegenereerd.
Met name de lijn ``Verbindingspercentage'' laat zien dat er nieuwe verbindingen waren
gestart met een snelheid van 100.0 verbindingen per seconde. Dit tarief komt overeen met een
periode van 10.0 milliseconden per verbinding. Het laatste cijfer in deze regel wordt weergegeven
dat er op elk moment maximaal 14 aansluitingen open waren.
De eerste regel met het label ``Verbindingstijd'' geeft levensduurstatistieken voor succesvol
verbindingen. De levensduur van een verbinding is de tijd die er tussen een TCP-verbinding zit
gestart en het tijdstip waarop de verbinding is verbroken. Er wordt gedacht aan een aansluiting
geslaagd als er ten minste één oproep was die met succes is voltooid. In het voorbeeld
uitvoer geeft de regel aan dat de minimale (``min'') levensduur van de verbinding 1.4 was
milliseconden was de gemiddelde (``avg'') levensduur 3.0 milliseconden, de maximale
(``max'') was 163.4 milliseconden, de mediane (``mediaan'') levensduur was 1.5
milliseconden, en dat de standaarddeviatie van de levensduur 7.3 was
milliseconden. De mediane levensduur wordt berekend op basis van een histogram met één
milliseconde resolutie en een maximale levensduur van 100 seconden. De mediaan is dus
nauwkeurig tot op een halve milliseconde als tenminste de helft van de succesvolle
verbindingen hebben een levensduur van niet meer dan 100 seconden.
De volgende statistiek in deze sectie is de gemiddelde tijd die nodig was om een TCP tot stand te brengen
verbinding. Alleen succesvolle TCP-verbindingsvestigingen worden geteld. In de
de tweede regel met het label ``Verbindingstijd'' laat bijvoorbeeld zien dat het gemiddeld
duurde 0.6 milliseconden om een verbinding tot stand te brengen.
De laatste regel in deze sectie is gelabeld ``Verbindingslengte.'' Het geeft de
gemiddeld aantal ontvangen antwoorden op elke verbinding die er ten minste één heeft ontvangen
antwoord (d.w.z. verbindingen die faalden voordat ze het eerste antwoord opleverden, zijn dat niet
geteld). Dit aantal kan groter zijn dan 1.0 vanwege aanhoudende verbindingen.
Sectie aanvragen
De regel met het label ``Request rate'' geeft de snelheid weer waarmee HTTP-verzoeken zijn verzonden
en de periode waarop dit tarief betrekking heeft. In het bovenstaande voorbeeld is het verzoek
snelheid was 100.0 verzoeken per seconde, wat overeenkomt met 10.0 milliseconden per
verzoek. Zolang er geen hardnekkige verbindingen worden gebruikt, zijn de resultaten hiervan
sectie lijken sterk op of zijn identiek aan de resultaten in de verbindingssectie.
Wanneer er echter permanente verbindingen worden gebruikt, kunnen meerdere oproepen worden uitgevoerd op een
enkele verbinding, in welk geval de resultaten anders zouden zijn.
De regel met het label ``Request size'' geeft de gemiddelde grootte van de HTTP-verzoeken weer
bytes. In het bovenstaande voorbeeld was de gemiddelde aanvraaggrootte 75 bytes.
Antwoord sectie
Voor eenvoudige metingen is dit gedeelte vaak het meest interessant als de lijn
gelabeld ``Reply rate'' geeft verschillende statistieken voor de respons rate. In het voorbeeld
hierboven was het minimum (``min'') antwoordpercentage 98.8 antwoorden per seconde, het gemiddelde
(``avg'') was 100 antwoorden per seconde en de maximale (``max'') snelheid was 101.2
antwoorden per seconde. De standaarddeviatie was 0.3 antwoorden per seconde. Het nummer
tussen haakjes laat zien dat er 60 steekproeven voor het antwoordpercentage zijn verkregen. Bij
Cadeau, httperf verzamelt eens in de vijf seconden een frequentiemonster. Voor het verkrijgen van een
zinvolle standaarddeviatie, wordt aanbevolen om tests lang genoeg uit te voeren
er worden minimaal dertig monsters genomen. Dit komt overeen met een testduur van minimaal
150 seconden.
De regel met het label ``Reply Time'' geeft informatie over hoe lang het duurde voordat de
server om te reageren en hoe lang het duurde om het antwoord te ontvangen. In het voorbeeld, het
duurde gemiddeld 2.4 milliseconden tussen het verzenden van de eerste byte van het verzoek en
ontvangst van de eerste byte van het antwoord. De tijd om te ``overdragen'', of lees, de
antwoord was te kort om te meten, dus het verschijnt als nul. Het is typisch wanneer
het volledige antwoord past in een enkel TCP-segment.
De volgende regel, genaamd ``Reply size'' bevat statistieken over de gemiddelde grootte van
de antwoorden --- alle nummers zijn in gerapporteerde bytes. In het bijzonder vermeldt de regel de
gemiddelde lengte van antwoordkoppen, de inhoud en voetteksten (HTTP/1.1 gebruikt voetteksten om
realiseer de ``chunked'' overdrachtscodering). Voor het gemak het gemiddelde totaal
aantal bytes in de antwoorden wordt ook tussen haakjes vermeld. In het voorbeeld de
de gemiddelde lengte van de koptekst (``koptekst'') was 242 bytes, de gemiddelde lengte van de inhoud
(``content'') was 1010 bytes, en er waren geen footers (``footer'' lengte is
nul). De totale lengte van het antwoord is gemiddeld 1252 bytes.
De laatste regel in deze sectie is een histogram van de belangrijkste ontvangen statuscodes
de antwoorden van de server. De belangrijkste statuscode is het ``honderden''-cijfer van
de volledige HTTP-statuscode. In het voorbeeld hadden alle 29,997 antwoorden een hoofdstatus
code van 2. Het is een goede gok dat alle statuscodes ``200 OK'' waren, maar de
informatie in het histogram is niet gedetailleerd genoeg om onderscheidende status mogelijk te maken
codes met dezelfde hoofdcode.
Diverse sectie
Deze sectie begint met een samenvatting van het CPU-gebruik op de clientcomputer.
In het voorbeeld geeft de regel met het label ``CPU-tijd'' aan dat er 94.31 seconden zijn besteed
uitvoeren in gebruikersmodus (``user''), 205.26 seconden zijn besteed aan uitvoeren in systeem
mode (``systeem'') en dat dit overeenkomt met 31.4% gebruikersmodus uitvoering en 68.4%
systeem uitvoering. De totale bezetting was 99.9%, wat gezien dat wordt verwacht
httperf is een CPU-varken. Een totaal CPU-gebruik van aanzienlijk minder dan 100% is een
teken dat er concurrerende processen waren die de test verstoorden.
De regel met het label ``Net I/O'' geeft de gemiddelde netwerkdoorvoer weer in kilobytes per
tweede (waarbij een kilobyte 1024 bytes is) en in megabits per seconde (waarbij een megabit
is 10^6 bits). In het voorbeeld een gemiddeld netwerkgebruik van ongeveer 129.6 kilobytes
per seconde werd aangehouden. Het getal tussen haakjes geeft aan dat dit overeenkomt met
ongeveer 1.1 megabit per seconde. Deze netwerkbandbreedte wordt berekend op basis van de
aantal bytes verzonden en ontvangen op de TCP-verbindingen. Met andere woorden, dat doet het
geen rekening houden met de netwerkheaders of TCP-hertransmissies die mogelijk hebben plaatsgevonden.
sectie Fouten
Het laatste deel bevat statistieken over de fouten die zijn opgetreden tijdens een
test. In het voorbeeld laten de twee regels met het label ``Errors'' zien dat er een
in totaal drie fouten en dat alle drie de fouten te wijten waren aan de weigering van de server
accepteer een verbinding (``connrefused''). Een beschrijving van elke foutenteller
volgt:
klant-timo: Het aantal keren dat een sessie, verbinding of gesprek is mislukt vanwege een
client time-out (zoals gespecificeerd door de --time-out en --denk-time-out) opties.
socket-timo: Het aantal keren dat een TCP-verbinding is mislukt op socketniveau
time-out (ETIMEDOUT).
verward: Het aantal keren dat een TCP-verbindingspoging is mislukt met een
``verbinding geweigerd door server'' fout (ECONNREFUSED).
verbindingsreset: Het aantal keren dat een TCP-verbinding is mislukt als gevolg van een RESET van de
server. Meestal wordt een RESET ontvangen wanneer de client gegevens probeert te verzenden naar
de server op een moment dat de server het einde van de verbinding al heeft verbroken. NT
servers sturen ook RESET's wanneer ze proberen een nieuwe verbinding tot stand te brengen wanneer de
luisterwachtrij is vol.
fd-niet beschikbaar: Het aantal keren dat de httperf proces had geen bestandsbeschrijvingen meer.
Wanneer deze telling niet nul is, zijn de testresultaten zinloos omdat de
client was overbelast (zie paragraaf "TIME-OUTWAARDEN KIEZEN").
addrunbeschikbaar: Het aantal keren dat de client geen TCP-poortnummers had
(EADDRNOTA BESCHIKBAAR). Deze fout mag nooit optreden. Als dat zo is, zouden de resultaten dat moeten zijn
weggegooid.
ftab-vol: Het aantal keren dat de bestandsdescriptortabel van het systeem vol is. Opnieuw,
deze fout zou nooit mogen optreden. Als dit het geval is, moeten de resultaten worden weggegooid.
andere: Het aantal keren dat een ander type fout is opgetreden. Wanneer dit
teller niet nul is, is het noodzakelijk om de werkelijke oorzaak van de fout op te sporen. Naar
hierbij helpen, httperf print de foutcode (errno) van de eerste onbekende
fouten die optreden tijdens een testrun.
. --wss or --wsslog is gespecificeerd, httperf genereert en meet in plaats daarvan sessies
van individuele oproepen en aanvullende statistieken worden aan het einde van een test afgedrukt. Een
voorbeelduitvoer wordt hieronder weergegeven.
Sessie tarief [sessie/s]: min 0.00 gem 0.59 max 2.40 stddev 0.37 (240/450)
Sessie: gem. 6.45 verbindingen/sessie
Sessie levensduur [S]: 123.9
Sessie mislukkingstijd [S]: 58.5
Sessie lengte histogram: 4 7 4 ... 3 3 240
De regel met het label ``Session rate'' toont de minimale, gemiddelde en maximale snelheid waarmee
sessies voltooid (gebaseerd op een bemonsteringsinterval van 5 seconden). Het toont ook de standaard
afwijking van het voltooiingspercentage van de sessie. De cijfers tussen haakjes geven aan hoeveel
sessies zijn geslaagd en hoeveel sessies er zijn gestart. In het bovenstaande voorbeeld is de
minimale, gemiddelde en maximale voltooiingspercentages voor sessies waren 0.00, 0.59 en 2.40 sessies
respectievelijk per seconde. De standaarddeviatie was 0.37 sessies per seconde en 240 uit
van 450 sessies succesvol afgerond (210 mislukt vanwege fouten zoals time-outs).
De volgende regel, genaamd ``Session:'' toont de gemiddelde duur van een sessie gemeten in
verbindingen. In bovenstaand voorbeeld waren hiervoor gemiddeld 6.45 aansluitingen nodig
een sessie afronden.
De regel met het label ``Session lifetime'' geeft de gemiddelde tijd aan die nodig was om een sessie te voltooien
geslaagde sessie. In het bovenstaande voorbeeld duurde het gemiddeld 123.9 seconden.
De regel met het label ``Session failtime'' geeft de gemiddelde tijd weer die nodig was voordat een
mislukte sessie mislukt. In bovenstaand voorbeeld duurde het gemiddeld 58.5 seconden voor a
sessie mislukken.
Ten slotte geeft de regel met het label ``Session length histogram'' een histogram van het aantal
antwoorden die door elke sessie zijn ontvangen. In het bovenstaande voorbeeld eindigden 4 sessies na ontvangst
helemaal geen antwoord, 7 eindigde na één antwoord, enzovoort (de weglatingstekens geven aan
extra histogramtellingen die vanwege ruimtegebrek in deze handleiding zijn weggelaten). Opmerking
dat dit histogram geen onderscheid maakt tussen geslaagde en mislukte sessies.
KIEZEN TIME-OUT WAARDEN
Sinds de machine dat httperf draait op slechts een eindige set bronnen beschikbaar heeft, kan het
geen willekeurig hoge HTTP-belastingen ondersteunen. Een beperkende factor is bijvoorbeeld dat er
zijn slechts ongeveer 60,000 TCP-poortnummers die op elk moment in gebruik kunnen zijn. Sinds op
bij de meeste UNIX-systemen duurt het een minuut voordat een TCP-verbinding volledig is gesloten (laat de
TIME_WAIT staat), is de maximale snelheid die een client kan ondersteunen maximaal 1,000 verzoeken per
tweede.
Het werkelijke duurzame tarief is vaak veel lager dan dat, omdat voordat het opraakt
TCP-poorten, zal de machine waarschijnlijk geen bestandsdescriptors meer hebben (één bestandsdescriptor is
verbruikt voor elke open TCP-verbinding). HP-UX 10.20 staat standaard 1,024 geopende bestanden toe
descriptoren per proces. Dit betekent dat zonder extra voorzorgsmaatregelen, httperf betalingen
mogelijk zeer snel alle beschikbare bestandsbeschrijvingen opgebruiken, waarna het zou kunnen
geen extra belasting van de server veroorzaken. Om dit probleem te voorkomen, httperf biedt
optie --time-out om een time-out in te stellen voor alle communicatie met de server. Als de serveerder
niet reageert voordat de time-out is verstreken, beschouwt de client het overeenkomstige
sessie, verbinding of oproep om ``dood'' te zijn, sluit de bijbehorende TCP-verbinding, en
verhoogt het aantal fouten van ``client-timo''. De enige uitzondering op deze regel is dat erna
een volledig verzoek naar de server sturen, httperf staat de server toe om wat extra te nemen
voordat het begint met het verzenden van het antwoord. Dit is om HTTP-verzoeken te accommoderen die een
lange tijd om te voltooien op de server. Deze extra tijd wordt de ``server-denktijd genoemd
tijd'' en kan per optie worden opgegeven --denk-time-out. Standaard is dit extra denk
tijd is nul seconden, dus de server zou altijd binnen de toegewezen tijd moeten reageren
door optie --time-out.
Time-outs toestaan httperf om hoge aangeboden belastingen te ondersteunen, zelfs wanneer de server overbelast is.
Bijvoorbeeld met een time-out van 2 seconden en ervan uitgaande dat er 1,000 bestandsdescriptors zijn
beschikbaar, kan de aangeboden belasting oplopen tot 500 verzoeken per seconde (in de praktijk is de
duurzame belasting is vaak wat kleiner dan de theoretische waarde). Aan de andere kant,
time-outs verkorten kunstmatig de distributie van de levensduur van de verbinding. Zo is het
aanbevolen om een time-outwaarde te kiezen die zo groot mogelijk is, maar klein genoeg om toe te staan
behoud van het gewenste aangeboden tarief. Een time-out van slechts één seconde kan acceptabel zijn,
maar grotere time-outs (5-10 seconden) hebben de voorkeur.
Het is belangrijk om in gedachten te houden dat time-outs niet garanderen dat een cliënt een
bepaalde aangeboden belasting --- er zijn veel andere potentiële bronknelpunten. Voor
in sommige gevallen kan de clientcomputer bijvoorbeeld simpelweg geen CPU-tijd meer hebben. Verzekeren dat
een bepaalde test heeft echt de mogelijkheden van de server gemeten en niet die van de client, het is een goede
idee om het aantal machines dat aan een test deelneemt te variëren. Indien waargenomen prestaties
hetzelfde blijft als het aantal clientmachines varieert, zijn de testresultaten waarschijnlijk
geldig zijn.
Gebruik httperf online met behulp van onworks.net-services