Bestimmen eines realistischen Maßes für Anforderungen pro Sekunde für einen Webserver

15

Ich richte einen Nginx-Stack ein und optimiere die Konfiguration, bevor ich live gehe. Ich war enttäuscht, als ich sah, dass 150 Anfragen pro Sekunde erledigt wurden und eine signifikante Anzahl von Anfragen> 1 Sekunde brauchte, um zurückzukehren. Seltsamerweise atmete die Maschine selbst nicht einmal schwer.

Ich habe mir endlich überlegt, die Box anzupingen und habe Ping-Zeiten um die 100-125 ms gesehen. (Die Maschine ist zu meiner Überraschung im ganzen Land). Anscheinend dominiert die Netzwerklatenz meine Tests. Es werden dieselben Tests von einem Computer im selben Netzwerk wie der Server ausgeführt (Ping-Zeiten <1 ms), und es werden> 5000 Anforderungen pro Sekunde angezeigt, was eher den Erwartungen entspricht, die ich an den Computer gestellt habe.

Aber das brachte mich zum Nachdenken: Wie bestimme und melde ich ein "realistisches" Maß für Anforderungen pro Sekunde für einen Webserver? Sie sehen immer Leistungsansprüche, sollten aber die Netzwerklatenz nicht berücksichtigen? Sicher, ich kann 5000 Anfragen pro Sekunde an einen Computer neben dem Server senden, aber nicht an einen Computer im ganzen Land. Wenn ich viele langsame Verbindungen habe, wirken sich diese letztendlich auf die Leistung meines Servers aus, oder? Oder denke ich darüber alles falsch nach?

Verzeih mir, wenn es sich um Network Engineering 101 handelt. Ich bin ein Entwickler von Beruf.

Update: Der Übersichtlichkeit halber bearbeitet.

Don
quelle
abhat eine Parallelitätsoption. Auf was hast du es eingestellt? Wenn Sie über eine inländische ADSL-Verbindung testen, wird der Test wahrscheinlich von Ihrer Bandbreite dominiert und testet überhaupt nichts auf dem Server.
Ladadadada
Ich bin mit der Parallelitätsoption von ab vertraut und habe eine Vielzahl von Werten ausprobiert, um die Grenzen der Box zu ermitteln. Wie ich oben geschrieben habe, habe ich verstanden, dass meine anfänglichen Tests vom Netzwerk dominiert wurden und nicht die Leistungsfähigkeit des Servers widerspiegeln. Meine Frage bleibt jedoch: Woher nehmen die meisten Leute ihre Tests, um realistische Messdaten zu erhalten? Tests, die von einer Box im selben Netzwerk wie der Server ausgeführt werden (wodurch die Netzwerklatenz effektiv aus der Gleichung entfernt wird), geben große Zahlen zurück, aber sie scheinen keine "fairen" Zahlen zu sein, da echte Benutzer von außerhalb des Netzwerks kommen.
Don
Tests, die über dasselbe Netzwerk ausgeführt werden, können in der Tat „fairer“ sein, da sie das Netzwerk im Wesentlichen ignorieren. Ihre Benutzer befinden sich wahrscheinlich alle in unterschiedlichen Netzwerken. Daher sollte die Gesamtbandbreite aller dieser Netzwerke die verfügbare Bandbreite Ihres Servers leicht überschreiten. Wenn alle Benutzer zusammen betrachtet werden, ist der Engpass daher die Leistungsfähigkeit des Servers. Wenn ein einzelner Benutzer betrachtet wird, kann der Engpass die Bandbreite dieses einzelnen Benutzers sein. (Der ideale Test wird möglicherweise von mehreren entfernten Standorten aus durchgeführt, um die tatsächlichen Umstände am besten zu simulieren. In den meisten Fällen sollte dies jedoch nicht erforderlich sein.)
Cyberx86
"Wenn man alle Benutzer zusammen betrachtet, ist der Engpass daher die Leistungsfähigkeit des Servers" - das ist sinnvoll und scheint die richtige Art zu sein, darüber nachzudenken. Ich nehme an, der Server könnte hinter beschissenen Netzwerkgeräten sitzen und die Antwortrate nach außen begrenzen, aber das ist nicht das eigentliche Problem des Servers und muss separat angegangen werden. Etwas wie Pingdom könnte verwendet werden, um den idealen Test durchzuführen, nehme ich an.
Don

Antworten:

3

Wenn Sie sich für die Leistung Ihres Servers interessieren, wenn Sie von irgendwo auf der Welt darauf zugreifen, bitten Sie einen Freund irgendwo auf der Welt (sollte eine gute Bandbreite haben), Sproxy + Belagerung auf seiner Linux-Box zu installieren . Einfach herunterladen, konfigurieren, erstellen. Diese Tools sind klein und lassen sich innerhalb von Sekunden kompilieren.

Zunächst starten Sie sproxyauf der Linux-Box. Standardmäßig wird es auf Port 9001 auf localhost (127.0.0.1) ausgeführt. Wenn Sie von außen darauf zugreifen möchten, übergeben Sie einfach die ausgehende IP-Adresse als Parameter.
Stellen Sie nun eine Verbindung zu Sproxy her, indem Sie Ihren Browser so einstellen, dass diese IP und dieser Port als Proxy für HTTP verwendet werden. Alles, was Sie von nun an tun, wird von Sproxy aufgezeichnet und kann später wiedergegeben werden. Surfen Sie jetzt auf Ihrer Website, tun Sie Dinge, die Ihre Kunden tun würden, und versuchen Sie, "teure" Dinge zu tun, die Ihren Server nutzen.
Wenn Sie fertig sind, beenden Sie sproxy, indem Sie STRG ^ C drücken. Es zeichnete deine Aktionen auf $HOME/urls.txt. Verschieben Sie die Datei an den Ort, an dem sich die Belagerung befindet. Führen Sie zum Starten des Stresstests Folgendes aus siege -f urls.txt -d NUM -c NUM. dsteht für die Verzögerung zwischen Anforderungen. Verwenden Sie bei Leistungstests 1 (Sekunde).csteht für die Anzahl der simulierten gleichzeitigen Benutzer. Wählen Sie nach Belieben, aber fangen Sie niedrig an. Siege zeigt Ihnen die Anzahl der Transaktionen pro Sekunde, Fehler, die durchschnittliche Dauer von Anfragen usw. an. Es ist ein leistungsstarkes und benutzerfreundliches Tool.
Wenn Sie weitere Informationen zu Parametern benötigen (es gibt viele), lesen Sie das Belagerungshandbuch und das Sproxy-Handbuch

Um realistischere Ergebnisse zu erzielen, lassen Sie Ihren Server von vielen Personen aus verschiedenen Ländern gleichzeitig testen und die Statistiken senden.

SebiF
quelle
2

Das realistische Maß für Anforderungen / Sek. Sollte aus den Zugriffsprotokollen entnommen werden. IMO hat die Anforderungswartezeit nichts mit der Serverauslastung zu tun, da der Server alle Anforderungen unabhängig von ihrer Herkunft mit derselben Geschwindigkeit verarbeitet.

ejaenv
quelle
1

Erwägen Sie die Verwendung von Diensten wie Soasta Cloudtest . Mit ihr können Sie ziemlich detaillierte Berichte über Ihre Tests erhalten und Leistungstests von verschiedenen öffentlichen Cloud- / Virtualisierungsanbietern durchführen. Sie können konfigurieren, wie hart und wie lange Sie Ihre Server schlagen möchten. Sie haben auch eine kostenlose " Lite " -Version, so dass Sie sehen können, was sie kann, bevor Sie Geld überweisen.

Mxx
quelle