Frage

ich bin versucht, herauszufinden, wie zu verwenden ApacheBench und benchmark-meine website.Habe ich installiert, die Standard-Website-Projekt (es ist ASP.NET MVC-aber bitte nicht aufhören zu Lesen, wenn u sind nicht .NETTO person).

Ich nicht etwas ändern.Neues Projekt hinzufügen.Set confuration zu lösen.Ausführen ohne Debuggen.(so ist es im LIVE-Modus).Ja, dies 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, an.

Erstens habe ich nach der Anzahl von Abfragen pro Sekunde.Also, wenn wir eine Anforderung haben, zu behandeln 300 reqs/sec, dann ist dieser Spruch es behandelt und durchschnittlich 421 req ist eine Sekunde?

Zweitens, was ist der Grund für das hinzufügen mehr parallel?Wie in, wenn ich 1000 trifft auf 1 gleichzeitige, wie funktioniert diese unterscheiden sich von 500 auf 2 parallel?Ist es zu testen, ob es irgendein code, blockiert andere Wünsche?

Schließlich gibt es etwas wichtiges, die ich verpasst habe aus den Ergebnissen was sollte ich beachten?

Vielen Dank :)

War es hilfreich?

Lösung

was ist der Grund für das hinzufügen von mehr parallel?Wie in, wenn ich 1000 trifft am 1 concurrent, wie lässt sich das unterscheiden um 500 auf 2 parallel?Ist es zu testen wenn es irgendeinen code, der andere Blöcke Anfragen?

Es ist ein bisschen darüber, ja :Ihre Anwendung ist wahrscheinlich, Dinge zu tun, wo Parallelität kann bringen Unannehmlichkeiten.

Ein paar Beispiele :

  • eine Seite versucht, auf eine Datei zuzugreifen -- sperren es in die Prozess ;es bedeutet, wenn eine andere Seite auf dieselbe Datei zugreifen, Sie haben zu warten, bis die erste Seite fertig mit ihm.
  • ziemlich das gleiche für die access-Datenbank :wenn eine Seite zu schreiben ist eine Datenbank, es ist eine Art der Verriegelung Mechanismen werden (Tabelle oder Zeile oder was auch immer, je nach DBMS)

Tests mit einer Parallelität von einem ist OK...Solange Ihre website nie mehr als ein Benutzer an der gleichen Zeit ;das ist nicht ganz realistisch, ich hoffe, dass für Sie.


Sie müssen darüber nachdenken, wie viele Benutzer auf der Website zur gleichen Zeit, wenn es ist in der Produktion -- und einstellen die Parallelität ;denken Sie daran, dass 5 Benutzer an der gleichen Zeit auf Ihrer Website, bedeutet nicht, Sie haben zu test mit eine Parallelität von 5 mit ab :

  • echtes Benutzer warten Sie ein paar Sekunden zwischen den einzelnen Anfrage (Zeit und Lesen Sie die Seite, klicken Sie auf den link, ...)
  • ab wartet nicht auf allen :jedes mal, wenn eine Seite geladen wird (dh, eine Anfrage abgeschlossen ist), startet eine weitere Anfrage !


Auch zwei andere Dinge :

  • ab nur tests für eine Seite -- echte Benutzer die Navigation auf der gesamten website, die dazu führen könnten Parallelitätsprobleme würden Sie nicht während des Tests nur eine Seite
  • ab nur Lasten einer Seite :es spielt keine Anfrage externen Ressourcen (glaube, CSS, Bilder, JS, ...) ;das bedeutet, Sie haben viele andere Anforderungen, wenn auch nicht wirklich teuer, wenn Ihre Website ist in die Produktion.

Nebenbei :möchten Sie vielleicht werfen Sie einen Blick auf andere tools, die weit mehr können komplette tests, wie Belagerung, Jmeter, oder OpenSTA :ab ist wirklich schön, wenn Sie Messen möchten, wenn etwas, das Sie haben, ist die Optimierung Ihrer Seite haben oder nicht ;aber wenn Sie wollen, um zu simulieren "echten" Einsatz von Ihre Website, sind diejenigen, die weit mehr angepasst.

Andere Tipps

Ja, wenn Sie wissen möchten, wie viele Anfragen pro Sekunde, die Ihre Website in der Lage ist zu dienen, Blick auf die "Anfragen pro Sekunde" - Linie.In Ihrem Fall ist es wirklich sehr einfach, da Sie lief ab mit der Gleichzeitigkeit von 1.Jede Anfrage, im Durchschnitt dauerte nur 2.371 ms.421 jener, einer nach dem anderen, nehmen Sie 1 Sekunde.

Sollten Sie wirklich spielen Sie mit der Parallelität ein wenig, um genau zu Messen die Kapazität Ihrer Website.Bis zu einem bestimmten Grad der Parallelität, die Sie erwarten würden, die den Durchsatz zu erhöhen, da mehrere Anfragen bekommen verarbeitet parallel von IIS.E. g.wenn Ihr server über mehrere CPUs/cores.Auch wenn eine Seite setzt auf externe ein - / Ausgänge (middle tier service oder DB-Aufrufe) kann die cpu Arbeit auf eine Anfrage, während der andere wartet auf IO abschließen.An einem bestimmten Punkt requests/sec wird sich mit Zunehmender Parallelität, und Sie werden sehen, die Latenz erhöhen.Erhöhung der Parallelität noch mehr und sehen Sie Ihren Durchsatz (req/Sekunde) verringern, wie der server hat, um mehr Ressourcen zu jonglieren alle diese gleichzeitigen Anfragen.

Allen, sagte, die Mehrheit Ihrer Anfragen Rückkehr in etwa 2ms.Das ist verdammt schnell, so dass ich vermute, es ist nicht viel Los in Bezug auf DB oder middle tier Anrufe, 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 ruft die Antwort-Seite, die Sie beabsichtigen, es zu?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.Du willst also laufen Sie ab, die auf einer anderen Maschine.

Außerdem sollte Ihre Website machen externe Anrufe zu middle tier-Dienstleistungen oder DBs, die Sie anpassen möchten Ihre Maschine.config 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, die Statistiken erfolgt in Schritten von ~16ms, wie wird angezeigt, um die Granularität des Timers verwendet.I. e.80% von Ihren Antworten nicht 0ms, Sie dauerte einige Zeit, <16ms.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top