Bandbreite der Internetanbindung auf Linux-Servern via Kommandozeile testen

Neben der Verfügbarkeit und der verfügbaren Hardwareressourcen spielt bei der Wahl des richtigen Server-Pakets bei einem Hoster natürlich auch die Netzanbindung eine bedeutende Rolle. Nur mit einer schnellen und zuverlässigen Anbindung lassen sich Fluten von Anfragen bewältigen. Da bei Hostern hier und da gerne getrickst oder nicht die erwartete Leistung bereitgestellt wird, ist ein kurzer Test der Netzwerk-Bandbreite zu empfehlen.

Für Desktop-Computer und Smartphones wird gerne das speedtest.net Netzwerk zusammen mit der gleichnamigen Website genutzt. Eine Flash-freie Alternative dazu wäre speedof.me, das auf HTML5 basiert. Da fähige Admins einen Linux Server natürlich niemals mit GUI administrieren würden ;) , sind die beiden Browser-basierten Speedtests jedoch uninteressant. Für speedtest.net gibt es zwar eine Python-Anwendung für das CLI - allerdings misst diese die Bandbreite für Up- und Downlink völlig unzuverlässig.

Also müssen wir auf herkömmliche Command Line Tools ausweichen, die Daten irgendwo down- oder uploaden und dabei die Geschwindigkeit messen. Ein sehr beliebtes und flexibles Tool ist das bekannte “curl”. Damit kann man Dateien z.B. via FTP herunterladen aber auch hochladen. Fehlt uns noch ein Kommunikationspartner, der uns Daten zum Download bereit stellt bzw. beim Upload entgegen nimmt.

Der Kommunikationspartner muss auf jeden Fall mehr Bandbreite zur Verfügung haben als unser Server, sonst würden die Tests verfälscht. Schließlich wäre dann unser Server nicht der limitierende Faktor, sondern der Server, der uns bei der Messung unterstützt. Außerdem sollte der Server nicht auf der anderen Seite der Welt liegen und sowohl Downloads als auch Uploads ermöglichen.

Bei meiner Recherche nach einem geeigneten Partnerserver bin ich schließlich auf das Unternehmen “Tele2” gestoßen, das genau das bietet, was wir für einen aussagekräftigen Speedtest brauchen: Server u.A. in Frankfurt (also dem Herz des deutschen Internets), eine starke Anbindung (10 GBit/s) und die Möglichkeit, Dateien via FTP sowohl herunter zu laden, als auch hoch zu laden. Dazu noch einige File-Samples mit unterschiedlichen Größen von 100 MB bis 1 TB.

Für einen Test sollte bei einer üblichen Netzanbindung von vServern eine 1 GB Datei ausreichen. Sollte die Bandbreite des Servers doch so hoch sein, dass der Test zu kurz läuft, kann man natürlich auf die größeren Dateien wechseln.

Downloadgeschwindigkeit messen

curl ftp://speedtest.tele2.net/1GB.zip -o /dev/null

Die 1 GB große ZIP-Datei wird heruntergeladen und auf dem Server verworfen. Statt der Datei “1GB.zip” könnt ihr beispielsweise auch “100MB.zip” oder “1000GB.zip” downloaden. Nach dem Download könnt ihr in der curl-Ausgabe die Durchschnittliche Downloadrate in MB/s (Megabyte pro Sekunde) ablesen:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1024M  100 1024M    0     0  10.2M      0  0:01:39  0:01:39 --:--:-- 14.4M

In diesem Fall waren es durchschnittlich 10,2 MB/s - Was in etwa einem 100 MBit/s Downlink entspricht. Das ist die übliche Geschwindigkeit bei Hostern für vServer.

Uploadgeschwindigkeit messen

Nun zum Upload: Für die Messung des Uplinks wird eine große Datei auf den Remoteserver geschickt. Dazu wird zuerst eine große .zip Datei heruntergeladen:

curl ftp://speedtest.tele2.net/1GB.zip -o speedtest.zip

… und dann wieder hochgeladen:

curl -T speedtest.zip ftp://speedtest.tele2.net/upload/

… und wieder gibt uns curl die Durchschnittsgeschwindigkeit aus:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1024M    0     0  100 1024M      0  34.4M  0:00:29  0:00:29 --:--:-- 61.5M

Hier wurde die 1 GB große Datei mit durchschnittlich 34,4 MB/s hochgeladen. Der Server hat also einen viel schnelleren Uplink als Downlink. So soll es i.d.R. sein.

(Update: Sollte Fehler “553: Could not create file” auftreten, hängt an die FTP-Adresse noch einen beliebigen Dateinamen. z.B. so: ftp://speedtest.tele2.net/upload/4534545.zip) Nach der Messung

Bevor man beim Hoster seine Beschwerde wegen zu niedriger Datenraten einreicht, sollte man jedoch mehrere Tests zu verschiedensten Tages- und Nachtzeiten durchgeführt haben - auch, um verfälschte Messungen zu relativieren, die möglicherweise zustande gekommen sind, weil der Testserver doch einmal an seine Belastungsgrenze gestoßen ist. 10 GBit/s sind zwar eine Menge, doch auch diese Bandbreite muss ggf. unter mehreren testenden Usern aufgeteilt werden. Testen zu viele User auf einmal, ist der Partnerserver auf einmal der Limitierende Faktor und nicht der eigene Server.

Ist die Datenrate auch nach mehrmaliger Messung zu niedrig, sollte mit anderen Admins auf anderen Servern / bei anderen Hostern verglichen werden. So kann man überprüfen, ob der Testserver chronisch überlastet ist. Dies wäre der Fall, wenn auch auf anderen Servern eine zu geringe Datenrate gemessen würde.