Bjoern: HTTP-Requests via Linux vs. Windows

Hi,

ich habe gerade ein etwas mysteriöses Problem:
Ich bin dabei einen speziellen Content-Manipulierenden HTTP-Proxyserver als Apache-Modul unter Linux aufzusetzen (Eigenbau).

Leider steigen die Antwortzeiten durch die Verwendung des Proxys auf inakzeptable Werte an (bis zu Faktor 20), während ein per Browser Direktzugriff äußerst performant ist.

Eine weitere Eingrenzung des Problems führte mich auf die Tatsache, dass die Seite selbst von der Shell per curl, wget, w3m usw. extrem langsam lädt (teilweise >>20s für 52kb).
Die Seite scheint laut Perlscript (LWP::Protocol::collect) größtenteils in 524bytes großen Paketen ausgeliefert zu werden.

Ein gutes Beispiel stellt die URL "http://www.bosch.de/start/content/language1/html/index.htm" dar.
Im Browser (FF20 unter XP) wird die Seite bei definitiv leerem Cache in 100-150ms komplett ausgeliefert, während curl u.a. mit exakt gleichem Request-Header (an FF20 angeglichen) 20s brauchen.
(Die Response-Header sind ebendalls identisch)

Ich habe das aus 6 unabhängen RZs heraus probiert (darunter Hetzner, Schlund, ...) und bin immer zum selben Ergebnis gekommen, dass unter Linux (bisher egal welche Anwendung [selbst per FF unter Gnome]) inakzeptable u. unter Windows sehr gute Werte zustande kommen (jeweils aus dem selben Netzwerk bzw. sogar der selben Maschine).

Der Webserver ist ein IIS 6.0.

Hat hier vllt. irgendjemand eine mögliche Erklärung dafür ?

Viele Grüße,
Björn

  1. Hallo Björn,

    Ein gutes Beispiel stellt die URL "http://www.bosch.de/start/content/language1/html/index.htm" dar.
    Im Browser (FF20 unter XP) wird die Seite bei definitiv leerem Cache in 100-150ms komplett ausgeliefert, während curl u.a. mit exakt gleichem Request-Header (an FF20 angeglichen) 20s brauchen.
    (Die Response-Header sind ebendalls identisch)

    Das kann ich so direkt nicht nachvollziehen. Bei mir braucht die Seite immer gleich lang - egal ob unter Windows 2000 (dort im IE 6 und FF 2.0 getestet) oder Linux (mit FF 2.0 und curl getestet). Wenn ich den Verkehr allerdings unter beiden OS per Wireshark mitschneide, dann sehe ich, dass der Server in lauter 590-Byte-Fragmenten antwortet. Und Fragmentierung ist immer schlecht. Warum ausgerechnet 590 Bytes gewählt werden, entzieht sich meiner Kenntnis, normalerweise sind selbst bei DSL 1482 Bytes problemlos möglich. Zudem: Laut Wireshark handeln die beiden Rechner auch die - für mein Netz - korrekte MSS aus.

    In meinen Augen liegt das Problem an irgend einer Stelle zwischen dem Bosch-Webserver und Dir (und da Du es von diversen RZs aus probiert hast, vmtl. ziemlich in der Nähe des Bosch-Webservers), d.h. irgendwo ist dort das Netz so blöd konfiguriert, dass es zu Fragmentierung führt - und DAS kostet eben enorm viel Zeit.

    Viele Grüße,
    Christian

    1. Moin!

      In meinen Augen liegt das Problem an irgend einer Stelle zwischen dem Bosch-Webserver und Dir (und da Du es von diversen RZs aus probiert hast, vmtl. ziemlich in der Nähe des Bosch-Webservers), d.h. irgendwo ist dort das Netz so blöd konfiguriert, dass es zu Fragmentierung führt - und DAS kostet eben enorm viel Zeit.

      Absichtliche Fragmentierung kann durchaus genutzt werden, um Downloadraten zu limitieren und Serverressourcen "besser" zu verteilen, nämlich gleichmäßiger auf viele parallel anfragende Clients.

      - Sven Rautenberg

      --
      "Love your nation - respect the others."