Warum die Diskrepanz zwischen Speedtest und Wget?

18

Mein Kunde beschwert sich über niedrige Internetgeschwindigkeiten. Gemessen mit Speedtest.net sind Geschwindigkeiten akzeptabel. Periodisch gemessene Downloads betragen 10% bis 30% der Nenndrehzahl. Das kann ich nicht erklären.

Etwas Hintergrund. Die problematische Verbindung besteht auf einer dieser sonnigen Karibikinseln, auf denen schnelles Internet nicht das größte Kapital ist. In letzter Zeit wurde die Internetgeschwindigkeit mit bis zu 200 Mbit / s angemessen. Aber Ping-Rundreise nach (sagen wir) Amsterdam ist etwa 180 ms.

Der Kunde verfügt über eine 100-Mbit / s-Glasfaserverbindung. Bei einem Speedtest auf einem Windows-Rechner (speedtest.net) zum ISP CO erhalten wir 95 Mbit / s. Mit dem gleichen Geschwindigkeitstest nach Amsterdam erreichen wir 60-70 Mbs. Voll akzeptabel.

Vor einiger Zeit habe ich ein RasPi installiert, das regelmäßig eine Datei von einem meiner Server in Amsterdam lädt. In einem Rechenzentrum, das direkt mit AMS-IX verbunden ist. Mit diesem Befehl:

wget -O /dev/null --report-speed=bits http://aserv.example.net/~myuser/links/M77232917.txt

Die TXT-Datei enthält 23 MByte an Zahlen. (Eigentlich ist es das einzige, aber größte Mersenne Prime, 23e6-stellig)

Wenn ich diese Datei im problematischen Netzwerk herunterlade, meldet wget Folgendes:

dev/null 100%[====================================================================>]  22.81M  11.6Mb/s   in 17s    

2019-02-08 14:27:55 (11.2 Mb/s) - ‘/dev/null’ saved [23923322/23923322]

Das ist gleichzeitig speedtest.net meldet 60-70 Mbit / s.

Ich weiß, dass der Raspi seine Grenzen hat. Diese Geschwindigkeit ist jedoch sehr unterschiedlich. Einmal meldet der RasPi diese 11 Mbit / s, das nächste Mal 22 Mbit / s. Aber manchmal so niedrig wie 1,5 Mbit / s.

Bildbeschreibung hier eingeben

Wenn ich diesen Test mit einem wirklich leistungsstarken Laptop durchführe, sind die Spitzengeschwindigkeiten etwas höher (bis zu 30 Mbit / s), zeigen aber auch die gleichen Tiefs. Es weist also auf eine RasPi-Einschränkung auf der High-Seite hin, nicht jedoch auf die 10 Mbit / s auf der Low-Seite.

Ich habe genau den gleichen Befehl von einem Server in München in einem Rechenzentrum ausgegeben. Geschwindigkeit 96 Mbit / s.

Dann von einem Consumer-Glasfaseranschluss mit 100 Mbit / s in den Niederlanden: 65 Mbit / s.

Dann bei mir zu Hause, die nominal 10 Mbit / s ADSL hat. Speedtest zeigt 10Mbps. Wget gibt 8,5 Mbit / s. Welches ist in meinem Buch gleich.

Dies schließt jegliche Einschränkung auf dem Server aus, der als Host für den Dateidownload fungiert.

Ich erwarte nicht, dass jemand die Ursache für die Langsamkeit der Verbindung beim Kunden feststellen kann. Aber kann jemand die Diskrepanz zwischen speedtest.net und wget erklären?

Gibt es etwas, das der Speedtest ignoriert, oder misst er nur die Peaks? Oder wird wget durch lange Pingzeiten stark beeinflusst?

Ich bin der Meinung, dass der Wget-Test die tatsächliche effektive Geschwindigkeit angibt, während der Speedtest hauptsächlich die beworbene Geschwindigkeit anzeigt.

Hans Linkels
quelle
Eine andere Möglichkeit, die Geschwindigkeit zu überprüfen, besteht darin ssh personal-server cat /dev/zero | pv > /dev/null, auf einem Personal Server, von dem Sie wissen, dass er nicht auf eine niedrigere Geschwindigkeit als die erwartete Geschwindigkeit beschränkt ist.
JoL
Ich habe Ihre Frage überflogen. Und es hört sich so an, als hätten Sie eine große Bandbreite und möglicherweise ein signifikantes Round-Trip-Delay-Szenario, das auch als "Long-Fat-Netzwerk" bezeichnet wird. Ich habe so etwas persönlich erlebt und gelöst, indem ich viele Verbindungen geöffnet habe (ich habe rsync verwendet). Können Sie versuchen, viele wget-Instanzen zu öffnen (versuchen Sie es mit 5, 10, 20)? Die Wikipedia-Seite ist: Bandbreitenverzögerungsprodukt.
Trevor Boyd Smith
Wget berichtet standardmäßig in Bytes: [james @ lamia root] $ wget -O / dev / null 10.32.48.1/t1 / dev / null 100% [==================== ====>] 100.00M 112MB / s in 0.9s [james @ lamia root] $ wget --report-speed = bits -O / dev / null 10.32.48.1/t1 / dev / null 100% [=== =================>] 100.00M 932Mb / s in 0.9s
James
Erwägen Sie, einen iperf- Server für tcp und einen zweiten für udp auf Ihrem von DC gehosteten Computer auszuführen . Rufen Sie dann im Rahmen des Cron-Jobs einen Test von Ihrem Client auf und sehen Sie, wie die Geschwindigkeiten mit denen von http verglichen werden.
Criggie
Um welche Art von Datei handelt es sich überhaupt? Ist es komprimierbar und der Server unterstützt die http-Komprimierung? Während Sie Bandbreitenprobleme nicht beheben können, können Sie die Datei möglicherweise verkleinern.
Salman A

Antworten:

16

Zusätzlich zu den anderen Gründen, die angegeben wurden, funktionieren TCP-Verbindungen bei großen Dateien nicht gut, wenn das Produkt mit der Verzögerung der Bandbreite groß wird.

Wie bei einer ansonsten schnellen Verbindung zu einer Insel.

Siehe Wikipedia-Eintrag zu TCP-Tuning .

Speedtest kann also eine kleine Datei mit 95 wgetMB / s über die Verbindung sichern, bei einer 20-MB-Datei jedoch nur 10 MB / s.

Andrew Henle
quelle
2
Das ist neues Wissen für mich. Sehr gut. Tatsächlich ist das Bandbreitenverzögerungsprodukt hoch (2,25 MB, wenn ich richtig gerechnet habe). Ein kurzer Blick zeigte einen Standardpuffer von 87 KB und maximal 3,5 MB. (Ich nehme an, Byte nicht Bits). Ich muss tiefer in dieses Thema eintauchen, um es besser einschätzen zu können. Wenn speedtest in Kombination viele kleine Dateien herunterlädt und die maximale Geschwindigkeit aufzeichnet, erklärt dies viel.
Hans Linkels
21

ISPs priorisieren häufig den Verkehr zu speedtest.net, damit sie damit angeben können, wie schnell ihre Verbindungen sind, während sie in Wirklichkeit nicht so viel Bandbreite bereitstellen. Sie sind sich vollkommen bewusst, dass die meisten Benutzer diese Website nur zur Bestätigung überprüfen.

Sie müssen auch berücksichtigen, dass die Übertragungsgeschwindigkeit sowohl vom Client als auch vom Server abhängt . In der heutigen Welt drosseln die meisten Server auf die eine oder andere Weise.

Schließlich ist es sinnlos, für Überseeverbindungen eine stabile Bandbreite zu erwarten. Es gibt einfach keine solche Sache. Es muss eine unendliche Anzahl von Switches, Fasern und Rechenzentren durchlaufen, um den endgültigen Standort zu erreichen. Und alles, was es braucht, ist nur ein beweglicher Teil, um langsamer zu werden.

bviktor
quelle
Ich verstehe Ihre Aussagen, außer für die Drosselung auf der Serverseite. Es ist mein eigener Server, und wenn sich der Client in einem anderen Rechenzentrum (ca. 1200 km entfernt) befindet, beträgt die Geschwindigkeit durchgehend 95 Mbit / s. Selbst wenn sich der Client in einer 100-Mb-Consumer-Verbindung befindet, sind es 65 Mbps.
Hans Linkels
9
Können Sie Ihre Behauptung dokumentieren? "ISPs priorisieren häufig den Verkehr zu speedtest.net"
Soleil
1
@ Soleil nicht zu viel Googeln: myce.com/news/…
MonkeyZeus
6
Ein ISP, der den Verkehr von Geschwindigkeitstests priorisiert, ist genauso wahrscheinlich wie ein großer Autohersteller, der Emissionsprüfungen vortäuscht.
Barmar
3
Anekdotisch war ich einmal in der Lage, einen stotternden Super Bowl-Stream zu "reparieren", indem ich von einem Raspberry Pi wiederholt Verkehr an speedtest.net sendete. Es schien, als hätten sie meiner gesamten Verbindung Priorität eingeräumt, solange Speedtest-Verkehr vorhanden war - Tag- und Nachtunterschied. Es ist nicht viel Beweis, dass ISPs zwielichtige Dinge tun, aber es ist etwas.
rückgängig machen
7

wgetGeben Sie ein gutes praktisches Maß für die Geschwindigkeit an. Die Tests von Speedtest beinhalten wahrscheinlich eine Art Parallelität, die höhere Zahlen erklären kann.

Für einen guten Durchschnittstest sollte die Zeit zum Herunterladen mindestens 90-120 Sekunden betragen (um einen guten Durchschnitt zu erhalten).

Romeo Ninov
quelle
Ich arbeite daran, einen leistungsfähigeren Protokollierungscomputer zu installieren und die Dateigröße zu erhöhen.
Hans Linkels
Können Sie eine "Art Parallelität" entwickeln? Ich sehe keinen Weg / Grund, da eine Verbindung von vornherein besteht.
Soleil
1
@Soleil, IMHO laden sie nur wenige Dateien herunter, nicht nur eine. Sie können es testen, indem Sie einige ausführen wgetund die Geschwindigkeit summieren
Romeo Ninov
1
Ich könnte meine Messung parallelisieren, aber was ist der Vorteil? Ich habe bereits gezeigt, dass andere Kunden die volle Geschwindigkeit erreichen. Der Unterschied besteht darin, dass die problematische Verbindung eine Latenz von 180 ms aufweist. Die schnellen Verbindungen <10 ms. Würden parallele Latenzzeiteffekte verringern? Nur Fragen.
Hans Linkels
1
@ RomeoNinov Ich habe überprüft, es gibt keine solche Parallelität (speedtest.net). Eine Datei pro Upload und eine pro Download (jeweils [1-2] MB).
Soleil
3

Ein Grund könnte sein, dass die maximale Geschwindigkeit häufig nicht mit nur einer TCP-Verbindung erreicht werden kann.

Speedtest.net hat kürzlich einen Einzelverbindungsmodus eingeführt. Versuchen Sie dies und sehen Sie, ob es einen Unterschied macht.

Verwenden Sie dann zum Herunterladen beispielsweise aria2 mit Parametern, um mehrere Verbindungen zu verwenden und zu vergleichen. z.Baria2c -d /dev -o null --allow-overwrite=true --file-allocation=none --max-connection-per-server=8 --min-split-size=1M http://aserv.example.net/~myuser/links/M77232917.txt

Josef
quelle
2

Verwenden Sie den Internet-Geschwindigkeitstest von Fast.com . Dies ist ein auf Netflix basierender Geschwindigkeitstest, der von ISPs nicht von Netflix selbst unterschieden werden kann.

Dies ist ein genauerer Test als jeder andere Test im Allgemeinen. Die Leute werden sich nicht darum kümmern, wie schnell eine Webseite geladen wird, sondern darum, wie schnell die Videos aufgrund der erhöhten Bandbreite, die für die Anzeige eines Videos erforderlich ist, zwischengespeichert werden.

ISPs erhöhen die Geschwindigkeit häufig basierend auf der Domäne, mit der eine Verbindung hergestellt wird, wenn es sich um einen Geschwindigkeitstest handelt oder wenn Port 8080 verwendet wird. Während Netflix Port 80 verwendet, ist dieser Port bei der Priorisierung langsamer.

Jonathan
quelle
1
"Das heißt, es kann nicht durch ISPs von Netflix selbst unterschieden werden" - Das ist falsch, der ISP kann definitiv sowohl die DNS-Anfrage als auch die SNI auf der HTTPS-Verbindung sehen.
Kevin
@Kevin fast.com kontaktiert Netflix-Server zum Herunterladen. Dies bedeutet, dass Videos von Netflix selbst emuliert werden. Obwohl ich Ihnen zugestehen werde, können ISPs feststellen, dass für die Verbindung zu dieser bestimmten Site, die anschließend Netflix-basierte Server kontaktiert, eine Priorisierung erforderlich ist, die der von speedtest.net
Jonathan
Es ist nicht gerade Raketenwissenschaft. Alles, was sie tun müssen, ist, Netflix für ein paar Minuten oder Stunden zu entdrosseln, nachdem sie eine fast.com-Verbindung gesehen haben. Der Vorteil ist natürlich, dass Sie zu fast.com gehen können, um sich zu entdrosseln, dann den Tab schließen und Netflix in Echt sehen können.
Kevin
Ich persönlich vermute, dass es sich eher um Informatik handelt oder zumindest damit verwandt ist als um Raketenwissenschaft. Es scheint, dass einige der größeren ISPs (z. B. Bell) in den letzten Jahren nicht auf fast.com Fuß gefasst haben. In beiden Fällen ist es sinnvoll, ein Skript auf Ihrem Computer auszuführen, das eine Verbindung zu fast.com herstellt, um die Download-Geschwindigkeit schrittweise zu erhöhen, wenn die Drosselung ausreichend ist.
Jonathan
0

Ist es nur ich oder hat niemand bemerkt, dass er Mbps und die wget Befehlsliste "MB / s" sagte.

60mbp / s und tatsächlich 11,2Mb ist normal.

Mbit / s und MB / s sind zwei verschiedene Geschwindigkeiten.

"Ein Megabit ist 1/8 so groß wie ein Megabyte, was bedeutet, dass Sie zum Herunterladen einer 1-MB-Datei in 1 Sekunde eine Verbindung von 8 Mbit / s benötigen." 60-70 MBit / s.

Verlieren Menschen mit Gedächtnis an Bedeutung? Bei einer Geschwindigkeitstestgeschwindigkeit von 70 Mbit / s werden Sie niemals 70 Mbit / s erreichen

bla Chesley
quelle
Die Ausgabe von wgetist Mb / s, was in Megabits / s übersetzt wird . MB / s würden in MegaBytes / s übersetzt . Führen Sie einfach Ihren eigenen wgetBefehl aus und überprüfen Sie das Ergebnis.
Thomas
1
@james: Ja, aber in OP enthält der wgetBefehl, --report-speed=bitswas zu welchem ​​Ergebnis Mb/sführt Mbit/s. Laufen ohne --report-speed=bitsgibt MB/swas übersetzt MByte/s. Beachten Sie die bund B.
Thomas