Ich habe fälschlicherweise angenommen, dass meine internen AB-Tests bedeuten, dass mein Server 1 KB Parallelität bei 3 KB Treffern pro Sekunde verarbeiten kann.
Meine derzeitige Theorie ist, dass das Netzwerk der Engpass ist. Der Server kann nicht schnell genug genug Daten senden.
Externe Tests von blitz.io bei einer Parallelität von 1 KB zeigen, dass meine Zugriffe auf 180 begrenzt sind, wobei die Seiten immer länger brauchen, um zu antworten, da der Server nur 180 pro Sekunde zurückgeben kann.

Ich habe eine leere Datei von Nginx bereitgestellt und sie gecancelt: Sie skaliert 1: 1 bei gleichzeitiger Verwendung.

Um Engpässe bei IO / Memcached auszuschließen (Nginx zieht normalerweise aus Memcached), stelle ich eine statische Version der zwischengespeicherten Seite aus dem Dateisystem bereit.

Die Ergebnisse sind meinem ursprünglichen Test sehr ähnlich; Ich bin auf ca. 180 RPS begrenzt.
Wenn ich die HTML-Seite in zwei Hälften teile, verdopple ich den RPS-Wert, sodass er definitiv durch die Größe der Seite begrenzt ist.

Wenn ich intern ApacheBench vom lokalen Server aus verwende, erhalte ich konsistente Ergebnisse von etwa 4 KBit / s sowohl auf der ganzen als auch auf der halben Seite bei hohen Übertragungsraten. Übertragungsrate: 62586,14 [KB / s] empfangen
Wenn ich von einem externen Server abweiche, erhalte ich ungefähr 180 RPS - genau wie die Ergebnisse von blitz.io.
Woher weiß ich, dass es keine absichtliche Drosselung ist?
Wenn ich ein Benchmarking von mehreren externen Servern durchführe, werden alle Ergebnisse schlecht, was mich zu der Annahme veranlasst, dass das Problem im ausgehenden Datenverkehr MEINER Server liegt, und nicht in der Download-Geschwindigkeit meiner Benchmarking-Server / blitz.io.
Ich bin also zu dem Schluss gekommen, dass mein Server nicht schnell genug Daten senden kann.
Habe ich recht? Gibt es andere Möglichkeiten, diese Daten zu interpretieren? Ist die Lösung / Optimierung zum Einrichten mehrerer Server + Lastenausgleich, die jeweils 180 Treffer pro Sekunde liefern können?
Ich bin ziemlich neu in der Serveroptimierung, daher würde ich mich über jede Bestätigung freuen, die diese Daten interpretiert.
Ausgehender Verkehr
Weitere Informationen zur ausgehenden Bandbreite finden Sie hier: Das Netzwerkdiagramm zeigt eine maximale Ausgabe von 16 Mb / s: 16 Megabits pro Sekunde. Klingt überhaupt nicht nach viel.
Aufgrund eines Throttling-Vorschlags habe ich mir das angeschaut und festgestellt, dass Linode eine 50-Mbit / s-Obergrenze hat (die ich anscheinend nicht annähernd erreicht habe). Ich hatte es auf 100mbps angehoben.
Bedeutet dies, dass mein Server zwar bis zu 100 MBit / s ausgeben kann, aber durch einen anderen internen Engpass eingeschränkt ist, da Linode meinen Datenverkehr begrenzt und ich ihn nicht einmal erreicht habe? Ich verstehe einfach nicht, wie Netzwerke in dieser Größenordnung funktionieren. Können sie buchstäblich so schnell Daten senden, wie sie von der Festplatte lesen können? Ist die Netzwerkleitung so groß?

Abschließend
1: Auf der Grundlage der obigen Ausführungen denke ich, dass ich meine 180 RPS definitiv steigern kann, indem ich einen Nginx-Load-Balancer auf ein Multi-Nginx-Server-Setup mit genau 180 RPS pro Server hinter dem LB setze.
2: Wenn Linode ein Limit von 50/100 MBit hat, das ich überhaupt nicht einhalte, muss es etwas geben, das ich tun kann, um dieses Limit mit meinem Single-Server-Setup zu erreichen. Wenn ich Daten lokal schnell genug lesen / übertragen kann und es sogar stört, eine 50-MBit / 100-MBit-Obergrenze zu erreichen, muss es einen internen Engpass geben, der es mir nicht ermöglicht, die Obergrenzen zu erreichen, bei denen ich nicht sicher bin, wie ich sie erkennen soll. Richtig?
Mir ist klar, dass die Frage jetzt groß und vage ist, aber ich bin nicht sicher, wie ich sie verdichten soll. Jede Eingabe wird zu jeder Schlussfolgerung, die ich gemacht habe, geschätzt.


