DSL Geschwindigkeit auf lokalem Webserver mit Apache und mod_bw simulieren
April 30th, 2008 - apache, bandwidth, lan, local, mod_bw, webserver
Der Hintergrund: man entwickelt z.B. eine videolastige Flash Anwendung die viele MB an Daten nachladen muss. Der Entwicklungs PC ist ans Firmennetzwerk ansgeschlossen und verfügt über eine schnelle Internetanbindung.
Wie testet man nun unter realen Bedingungen (DSL Geschwindigkeit), wie sie der Endnutzer auch zu Hause hat?
Zunächst bräuchte man einen Webserver auf dem man seine Anwendung hochladen kann. Und anschließend bleibt der Weg zu einem Testrechner der über einen DSL Anschluss ferfügt.
Doch in der frühen Entwicklungs Phase ist nicht immer ein Webserver gegeben und der Testrechner steht eh immer zu weit weg.
Einfacher gehts mit Software Tools, die künstlich die Bandbreite beschränken und damit auf dem lokalen Entwicklungssystem einen Test unter geringeren Geschwindigkeiten erlauben (z.B. Charles). Allerdings sind diese meist nicht kostenlos.
Eine kostenlose Möglichkeit die Bandbreite zu drosseln bietet z.B. das Modul mod_bw für den Apache Webserver. Richtet man dieses auf einem lokalen Webserver ein, kann man damit sehr einfach beliebige Datenraten simulieren (besonders einfach geht das mit XAMPP).
Hier ein leines Beispiel wie die Bandbreiete eines VirtualHost geändert werden kann:
...
BandwidthModule On
ForceBandWidthModule On
Bandwidth all 1024000
Servername www.example.com
...
Es gibt noch zahlreiche andere einstellbare Optionen, so ist es z.B. auch möglich nur die Bandbreite einzelner Dateitypen zu reduzieren.
Man kann so lokal sehr schön testen wie lange eine Anwendung laden muss, ob vielleicht doch ein Preloder benötigt wird, ob man Bildaten nochmal optimieren sollte, oder man kann sehen z.B. bei einem FLV Player sehen wie voll der der Buffer ist, oder wie viele Sekunden gebuffert werden müssen, damit auch bei langsamen Internetverbindungen ein flüssiges abspielen gewährleistet ist.
Ein Problem das bei mir bei Einsatz dieses Moduls auftrat, war das Phänomen, dass bei einem Abbruch des aktuellen Ladevorganges (z.B. eines Bilder) und dem später erneuen Anfragen der selben Datei, dieses Bild defekt vom Webserver ausgeliefert wurde. Es hatte den anschein als würden einmal ausgelieferte Daten (leider auch nicht vollständig ausgelieferte) gecacht.
Trotz dieses Problems eignet sich dieses Verfahren recht gut für die laufende Entwicklung, dennoch sollte ein Test in einer realen Umgebung regelmäßig stattfinden.
RELATED
