Kann mir bitte jemand erklären, was diese ApacheBench Ergebnisse bedeuten?
ich versuche, herauszufinden, wie zu verwenden ApacheBench und benchmark meiner website. Ich installierte die Standard-Website-Projekt (es ist ASP.NET MVC-aber bitte nicht aufhören zu Lesen, wenn u Sie nicht ein .NETTO-person).
Ich nichts verändert habe. Neues Projekt hinzufügen. Set confuration zu lösen. Ausführen ohne Debuggen. (so ist es im LIVE-Modus). Ja, das ist mit dem eingebauten Web-Server, nicht die Produktion-Grad-IIS oder Apache oder was auch immer.
Also hier die Ergebnisse :-
C:\Temp>ab -n 1000 -c 1 http://localhost:50035/
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 localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
Server Software: ASP.NET
Server Hostname: localhost
Server Port: 50035
Document Path: /
Document Length: 1204 bytes
Concurrency Level: 1
Time taken for tests: 2.371 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 1504000 bytes
HTML transferred: 1204000 bytes
Requests per second: 421.73 [#/sec] (mean)
Time per request: 2.371 [ms] (mean)
Time per request: 2.371 [ms] (mean, across all concurrent requests)
Transfer rate: 619.41 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 1.1 0 16
Processing: 0 2 5.5 0 16
Waiting: 0 2 5.1 0 16
Total: 0 2 5.6 0 16
Percentage of the requests served within a certain time (ms)
50% 0
66% 0
75% 0
80% 0
90% 16
95% 16
98% 16
99% 16
100% 16 (longest request)
C:\Temp>
Nun, ich bin mir nicht sicher, was genau ich suchen sollte.
Erstens, habe ich, nachdem die Anzahl der Anfragen pro Sekunde. Also, wenn wir eine Anforderung zu verarbeiten 300 reqs/sec, dann wird diese sagen, dass es Griffe und Durchschnitt von 421 req ist ein Sek?
Zweitens, was ist der Grund für das hinzufügen von mehr parallel? Wie, wenn ich 1000 hits auf 1 concurrent, wie funktioniert, die sich bis 500 auf 2 parallel? Ist es zu testen, ob es irgendeinen code, blockiert andere Wünsche?
Guter Letzt, gibt es etwas wichtiges verpasst habe ich aus den Ergebnissen was sollte ich beachten?
Dank 🙂
InformationsquelleAutor der Frage Pure.Krome | 2009-09-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist ein bisschen darum, ja : Ihre Anwendung ist wahrscheinlich, Dinge zu tun, wo die Parallelität kann Schwierigkeiten bringen.
Ein paar Beispiele :
Tests mit einer Parallelität ist schon OK... so lange, Wie Sie Ihre website wird nie mehr als einen Benutzer zur gleichen Zeit ; dies ist nicht ganz realistisch, hoffe ich für Sie.
Sie haben zu denken, wie viele Benutzer auf der Website zur gleichen Zeit, wenn es in der Produktion -- und einstellen der Parallelität ; nur daran erinnern, dass 5 Benutzer gleichzeitig auf Ihre Website bedeutet nicht, müssen Sie Tests mit einer concurrency von 5 mit ab :
Auch zwei andere Dinge :
Nebenbei : möchten Sie vielleicht einen Blick auf die anderen tools, die weit mehr können vollständige tests, wie BelagerungJmeteroder OpenSTA : ab ist wirklich schön, wenn Sie wollen, um zu Messen, ob etwas, das Sie haben, ist die Optimierung Ihrer Seite oder nicht ; aber wenn Sie wollen, um zu simulieren "echte" Nutzung Ihrer Website, das sind weit mehr angepasst.
InformationsquelleAutor der Antwort Pascal MARTIN
Ja, wenn Sie wissen möchten, wie viele Anfragen pro Sekunde Ihre Website ist in der Lage, zu dienen, sich die "Anfragen pro Sekunde" - Linie.
In Ihrem Fall ist es eigentlich ganz einfach da, Sie lief ab mit Parallelität der 1. Jede Anfrage im Durchschnitt dauerte nur 2.371 ms. 421 jener, einer nach dem anderen, nehmen Sie 1 Sekunde.
Sollten Sie wirklich spielen mit der Parallelität ein wenig, um genau zu Messen die Kapazität Ihrer Website.
Bis zu einem gewissen Grad von Parallelität, die Sie erwarten würden, die den Durchsatz zu erhöhen, wie mehrere Anfragen bekommen, behandelt parallel von IIS.
E. g. wenn Ihr server mehrere CPUs/Kerne. Auch wenn eine Seite setzt auf externes IO (middle tier-service-oder DB-Aufrufe) der cpu können auf einen Antrag, während ein anderer wartet auf IO zu vervollständigen.
An einem bestimmten Punkt Anfragen/Sek. einpendeln werden, mit Zunehmender Parallelität, und du wirst sehen, die Latenz zu erhöhen. Erhöhung der Parallelität noch mehr und sehen Sie Ihren Durchsatz (req/sec) verringern, wie der server hat mehr Mittel für die jonglieren alle diese gleichzeitigen Anfragen.
Alles, was gesagt, die Mehrheit der Ihre Anfragen zurück, die in etwa 2ms. Das ist verdammt schnell, so dass ich vermute, es ist nicht viel Los in Bezug auf die DB oder middle tier ruft, und Ihr system ist wahrscheinlich maxed out auf cpu, wenn der test ausgeführt wird (oder etwas falsch ist, und das wirklich schnell. Sind Sie sicher, dass ab bekommt die Antwort-Seite, die Sie beabsichtigen, es zu werden? I. e. ist die Seite, die Sie denken, Sie sind Prüf-1204 bytes groß?).
Das bringt einen weiteren Punkt: ab selbst verbraucht cpu zu, vor allem, wenn Sie die Parallelität. Sie wollen also starten Sie ab auf einer anderen Maschine.
Ebenfalls, sollte Ihre Website stellen Sie externe Gespräche auf middle-tier-services oder Datenbanken, die Sie anpassen möchten Ihrer Maschine.config zu optimieren, die Anzahl der threads, IIS weist:http://support.microsoft.com/default.aspx?scid=kb;en-us;821268
Und nur ein wenig trivia: die Zeit der Statistiken erfolgt in Schritten von ~16ms, wie es zu sein scheint, dass die Granularität der Zeitgeber. I. e. 80% deiner Antworten nicht nehmen 0ms, Sie dauerte einige Zeit, <16ms.
InformationsquelleAutor der Antwort turnhose