Robert: Downloadgeschwindigkeit der Besucher ermitteln

Hallo,

ich habe ein kleines PHP-Skript geschrieben, dass die
Downloadgeschwindigkeit eines Besuchers "mißt".

siehe... http://webdienst.webdienst.de/speed/

So kann man bei Modemnutzern qualitativ schlechtere (kleinere)
Bilder und bei DSL-Nutzern hochwertige Grafiken anzeigen.
Oder man berechnet die Downloadzeit für Programme etc in etwa.

Wenn ihr Vorschläge zur Verbesserung der Messung habt einfach
auf diesen Beitrag antworten.

CU
Robert

  1. Hallo!

    Funktioniert das wirklich richtig?
    Ich habe 1mbit/s und das Programm zeigt mir 1620 bytes/s an?

    Vielleicht hab ichs auch nur nicht verstanden :)

    Gruß, muenzchen

    1. Hallo!

      Funktioniert das wirklich richtig?
      Ich habe 1mbit/s und das Programm zeigt mir 1620 bytes/s an?

      Vielleicht hab ichs auch nur nicht verstanden :)

      Gruß, muenzchen

      Das Programm
       + ermittelt eine Startzeit
       + sendet an den Browser 2 KByte Daten
       => Seite mit Startzeit aufrufen
       + Zeitdifferenz ermitteln
       + Daten / Zeit ermitteln

      es muß sicher die Zeit für das "umleiten"
      als Konstante abgezogen werden.

      1. Hi

        Das Programm

        • ermittelt eine Startzeit
        • sendet an den Browser 2 KByte Daten
          => Seite mit Startzeit aufrufen
        • Zeitdifferenz ermitteln
        • Daten / Zeit ermitteln

        es muß sicher die Zeit für das "umleiten"
        als Konstante abgezogen werden.

        das geht nicht. Ich habe laut deinem Script einen Downstream von 4MBit, habe aber nur einen wirklichen Downstream von 0,75MBit.

        Fabian

        1. Hallo,

          die Dampfmaschine ging am Anfang auch nicht. Bevor James Watt die automatische Fliehkraftregelung für die Dampfzufuhr erfunden hatte, flogen die Dinger immer in die Luft. Erst danach war Stephenson in der Lage, sein Eisenbahnprojekt in die Tat umzusetzen und wenig später kam dann Diesel auf die Idee, daraus den Verbrennungsmotor zu erfinden.

          Was ich damit sagen will?

          Lehnt nicht immer alles gleich ab nch dem Motte, was immer so war darf sich auch nicht ändern...

          Wenn an dem Script-Konstrukt 'was nicht läuft, dann sollten wir einfach mal helfen, dass es klappt. Allerdings ist HTTP nicht so gut geeignet für die Messung, sondern UDP oder ICMP wären besser.

          Liebe Grüße aus http://www.braunschweig.de

          Tom

          --
          Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.
          1. Hi

            die Dampfmaschine ging am Anfang auch nicht. Bevor James Watt die automatische Fliehkraftregelung für die Dampfzufuhr erfunden hatte, flogen die Dinger immer in die Luft. Erst danach war Stephenson in der Lage, sein Eisenbahnprojekt in die Tat umzusetzen und wenig später kam dann Diesel auf die Idee, daraus den Verbrennungsmotor zu erfinden.

            Was ich damit sagen will?

            Lehnt nicht immer alles gleich ab nch dem Motte, was immer so war darf sich auch nicht ändern...

            Das tu ich gewiss nicht, ich denke da kennst du mich. Aber ich bin der Meinung mit meinen infantilen Kenntnissen von HTTP sagen zu können, dass eine simple Zeitmessung für X Kb Daten _überhaupt_ keine Aussage über die Bandbreite zulässt, sondern wenn überhaupt über die Verbindungsgeschwindigkeit, und dass DSL da klar Vorteile hat ist bekannt. Trotzdem kann man einfach nicht wissen, wie ausgelastet eine _gerade_ Leitung ist.

            Wenn an dem Script-Konstrukt 'was nicht läuft, dann sollten wir einfach mal helfen, dass es klappt. Allerdings ist HTTP nicht so gut geeignet für die Messung, sondern UDP oder ICMP wären besser.

            Full ACK, dass kann schon viel eher gehen.

            Fabian

          2. Wenn ich Daten per UDP oder ICMP-Protokoll an den Besucher senden
            möchte, dann brauche ich aber die IP-Adresse.

            Bei Proxies (z.B. Firmennetze) oder z.B. AOL kommt man aber nicht
            an die IP, bzw ändert sich die IP bei jedem Aufruf.

  2. Hallo!

    Vermutlich habe ich es nicht 100%ig verstanden, aber wie es aussieht schickst Du dem Client  2KB Dummy-Daten und eine header-Weiterleitung mit Absende-Zeitpunkt als Parameter, und berechnest dann beim 2. Request daraus die Bandbreite oder? Ich weiß nicht ob das so besonders aussagekräftig ist. Selbst bei einem Modem dauert das ganze nichtmal eine halbe Sekunde, aber durch gewisse Umstände können requests an sich schon länger brauchen, das verfälscht vor allem das Ergebnisse bei den schnellen Anschlüssen(Bei DSL theoretisch nur wenige 1/100 Sekunden). 2KB sind für eine Messung IMHO zu wenig. So wie Du das jetzt machst hast Du so gut wie keine Aussage über die Bandbreiten, eher schon über die Länge bzw. Performance der Verbindung.

    Viele Grüße
    Andreas

    1. THX,

      ich hatte ein wenig mit der Größe für die Dummy-Daten "gespielt"
      und bei 2 KByte "Schrott" kommt ein annähernd gleicher Wert raus.

      Um Modem von Breitband zu unterscheiden sollte ich evtl. 10-20 Kb
      an Daten senden, da beim Modem theoretisch eine Antwort erst nach
      4-8 Sekunden erfolgen wird. Bei DSL sollte das ganze nicht länger
      als 1-2 Sekunden dauern.

      1. Hi,

        Um Modem von Breitband zu unterscheiden sollte ich evtl. 10-20 Kb
        an Daten senden, da beim Modem theoretisch eine Antwort erst nach
        4-8 Sekunden erfolgen wird. Bei DSL sollte das ganze nicht länger
        als 1-2 Sekunden dauern.

        Vorausgesetzt, daß die Bandbreite des DSL tatsächlich in dem Moment für Deinen Download zur Verfügung steht. Was aber, wenn nebenbei noch ein paar dicke Downloads parallel laufen.

        Ich weiß auch nicht, ob ein Browser, der im header bereits eine Umleitung feststellt, überhaupt verpflichtet ist, den ganzen body der Response entgegenzunehmen - ich könnte mir vorstellen, daß der neue Request sofort nach Erhalt dieses location-headers abgesetzt wird.

        Oder daß vielleicht schon ein Proxy zwischen Browser und Server sitzt und der bereits die location-header abfängt und ausführt.

        Oder ...

        Aber selbst wenn tatsächlich alle Daten vom Server zum Client gehen und der zweite Request wieder beim Server ankommt, hast Du maximal ermittelt, wie lange dieser eine Rundlauf gedauert hat.
        Mehr aber auch nicht. Jeder weitere Rundlauf kann eine ganz andere Zeit ergeben.

        cu,
        Andreas

        --
        Der Optimist: Das Glas  ist halbvoll.
        Der Pessimist: Das Glas ist halbleer.
        Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
        1. Wer führt den die Umleitung aus? Der Browser oder der Provider?
          Ich kann mir nicht vorstellen, das der Provider/Router/Proxy jedes Paket in Layer 7 nach "location: " durchsucht.

          Da ich Dummy-Daten im Header mitgebe und erst dann das location:
          kommt, erhält der Browser diese (z.B. 2 Kb) Daten immer. Dann wertet
          der Browser den header aus und holt die Seite aus location.

          Mit dem SPEED.PHP kann ich aber auch nur messen, wie schnell der
          Server seine Daten ins Netz (Server->Router->Provider->Provider->User)
          also zum Router schickt. Die Bandbreite des Users messe ich damit
          leider nicht oder?

  3. Hi Robert,

    ich glaube das Problem ist, dass bei 2Kbyte Daten der HTTP-Header, die Client-Reaktionszeit prozentual zu verfälschend ist.
    Wenn du mal 10kb probieren würdest, dann würde es vielleicht länger dauern, aber du hättest ein bessere Annäherung.
    Ich würde auch gleich zwei Messungen durchführen, die dann vergleichen, um darauf schließen zu können, ob der Wert realistisch ist.

    Ob du ein funktionierendes Skript hinbekommen kannst würde ich bezweifeln, weil es einfach von viel zu vielen Faktoren abhängt (z.B. auch Ping...)

    ...würde mich aber trotzdem interessieren ;)

    Gruß,
    Benne

  4. Moin!

    ich habe ein kleines PHP-Skript geschrieben, dass die
    Downloadgeschwindigkeit eines Besuchers "mißt".

    So kann man bei Modemnutzern qualitativ schlechtere (kleinere)
    Bilder und bei DSL-Nutzern hochwertige Grafiken anzeigen.
    Oder man berechnet die Downloadzeit für Programme etc in etwa.

    Ein Skript aus der Kategorie "Spielkram", würde ich sagen. Und ich denke, ich hab' ein paar gute Gründe anzuführen, warum man sowas schon aus grundsätzlichen Erwägungen nicht unbedingt einsetzen sollte:

    1. DSL wurde eigentlich erfunden, damit Webseitenzugriffe schneller ablaufen und man nicht so lange warten muss. Wenn dieser Geschwindigkeitsvorteil nun durch einen Automatismus, der einfach fettere Grafiken liefert, wieder aufgehoben wird, dann braucht man eigentlich kein DSL mehr. Da ist eine manuelle Auswahl per simplem Link eigentlich besser - dann hat man selber die Wahl, ob man schnell und mit wenig Daten (manche zahlen keine Flatrate, sondern den Traffic) surfen will, oder "full-featured".

    2. Wenn man zwei Versionen anbieten will, hat man natürlich auch den doppelten Aufwand, zwei Versionen zu pflegen. Eigentlich sind wir doch schon bei den "Netscape-Version/Explorer-Version"-Diskussionen und den "800er/1024er/1280er"-Diskussionen mehrheitlich zur Ansicht gelangt, dass es ein unnötiger Extraaufwand ist, eine spezielle Version für gewisse Umstände zu pflegen. Soll heißen: Der Trend geht zu _einer_ Universalversion, nicht zu speziell super-angepaßten Seiten, um schlicht und einfach Arbeit zu sparen.

    3. Die stark von der Realität abweichenden Ergebnisse lassen die Verwendung nicht unbedingt ratsam erscheinen, denn was passiert, wenn man nicht nur mißt, sondern aufgrund der Messung auch Entscheidungen trifft - und falsch liegt? Es gibt reichlich Gründe, warum die Messung falsch sein kann.

    - Sven Rautenberg

    --
    Diese Signatur gilt nur am Freitag.
    1. Danke für diese konstruktive Antwort. Das war genau das, was ich
      hören wollte. Dank dieses Beitrages kann ich nun mein Vorhaben,
      die Anbindung der Besucher zu messen, endlich umsetzten.

      Es geht mir nicht darum DSL-Nutzer mit fetten Bildern zu nerven,
      sondern Modemnutzern das Leben zu erleichern.

      Außerdem möchte ich die etwaige Downloadzeit für eine Datei
      abschätzen. Sicher gibt es noch andere Einsatzmöglichkeiten.
      Marketingleute würde sicher eine Einordnung in
      Modemanbindung("Der Sparer") oder DSL-Nutzer interessieren.