%20eine%20standardm%C3%A4%C3%9Fige%20Bandbreitenbeschr%C3%A4nkung%3F.png)
Ich verwende Apache auf einem Server in der Cloud (Windows Server 2008 R2 auf VMware, 1 Gbit/s Bandbreite http://95.110.164.61
). Ich streame viele Live-DVB-MPEG-Transport-Streams, die in einer Schleife vorkomprimiert werden (kein Flash), die von VLC auf Port 640xx generiert und dann von Apache auf Port 80 per Reverse-Proxy weitergeleitet werden.
Die Firewall des Servers ist auf allen Ports für VLC und Apache geöffnet.
Oberhalb von 1,5 Mbit/s ist die Wiedergabe durch ständiges Stop & Go beeinträchtigt. Bitte beachten Sie, dass Sie einen korrekten Stream sehen, wenn Sie einen von VLC direkt bei anfordern http://95.110.164.61:64087/mpg2_6.4
, während dies bei einer Anforderung http://95.110.164.61/mpg2_6.4
nicht der Fall ist.
Ich weiß, dass der Flash-Streaming-Server Apache zum Streamen auf Port 80 verwendet (und es funktioniert). Ich bin kein Apache-Experte. Kann mir jemand sagen, ob ein „spezielles“ Modul erforderlich ist, um die Bandbreite zu erhöhen?
Antwort1
Apache hat standardmäßig keine Ratenbegrenzung oder Bandbreitenbegrenzung. Tatsächlich bieten nur externe Module diese Funktionalität, sodass Sie sich besonders anstrengen müssen, um sie zu aktivieren.
Standardmäßig nutzt Apache die größtmögliche Bandbreite.
Antwort2
Noch immer schreibt Igino Manfre‘ (bitte nicht vergessen, ich bin ein Apache-Neuling).
Vielleicht sollte man es nicht als Bandbreitenbeschränkung bezeichnen, aber das Endergebnis ist dasselbe: Wenn Apache nicht richtig konfiguriert ist, kann es nicht genügend Informationen durch das Web übertragen.
Diese Aktivität wird unter Windows von Apache-Multithreading-Modulen ausgeführt (die einzigen, die unter Windows verfügbar sind, offiziell Multi Processing Module genannt, aber oft auch „Workers“ genannt), die in jedem Fall konfiguriert werden müssen. Wenn Apache unter Windows ausgeführt wird, finden Sie nur zwei Prozesse „httpd“, einen untergeordneten Prozess des anderen. Der untergeordnete Prozess aktiviert alle erforderlichen Threads durch die Verbindung. In der Apache-Dokumentation habe ich festgestellt, dass ein für jedes Betriebssystem spezifischer Abschnitt erforderlich ist, der aus extra\httpd-mpm.conf kopiert und in httpd.conf eingefügt werden kann. Der Windows-Standardabschnitt enthält nur zwei Zeilen innerhalb der Bezeichnung „IfModule mpm_winnt_module“, um das Multithreading zu verwalten.
ThreadsPerChild: konstante Anzahl von Worker-Threads im Serverprozess (auf 150 festgelegt)
MaxRequestsPerChild: Maximale Anzahl von Anfragen, die ein Serverprozess bedient (auf 0 setzen, automatisch)
In diesem Fall handelt es sich jedoch nicht um ein Problem der Softwareeffizienz (also des Threadings), sondern wahrscheinlich um ein Problem der Netzwerkpufferung. Ich habe in der umfangreichen Dokumentation von Apache die Existenz des Parameters SendBufferSize gefunden (der zu httpd.conf hinzugefügt werden muss). Er erhöht die Größe des TCP-Sendepuffers, was nützlich ist, um Verbindungen mit hoher Latenz mit RTT von mehr als 100 ms (wie bei einer normalen ADSL-Heimverbindung) auszugleichen. Standardmäßig oder wenn der Wert auf 0 gesetzt ist, verwendet der Server die Betriebssystemstandardeinstellung.
Sendepuffergröße 1000000
Ich habe mich für 1.000.000 (1 MB) entschieden. Das mag nach einer großen Zahl klingen, ich habe jedoch gesehen, dass diese hohen Werte häufig verwendet werden.
ES FUNKTIONIERT! Beim Öffnen des Streams mit dem VLC-Player streamt Apache jetzt die 6,4 Mbit/s, wie es VLC getan hat. Das bedeutet, dass der Engpass beseitigt wurde. Mit der wissenschaftlichen Methode habe ich getestet, dass das Streaming beim Kommentieren dieses Parameters erneut unter Stop-and-Go leidet.
Um den Stream richtig anzuzeigen, benötigen Sie in jedem Fall eine Verbindungsbandbreite, die ausreichend größer ist als die zum Abspielen des Streams erforderliche (sagen wir mindestens 30 %). Um die 6,4 Mbit/s anzuzeigen, benötigen Sie also mindestens 8 Mbit/s.
Ich hoffe, diese Zeilen helfen jemand anderem.
Ein weiterer Vorbehalt: Wenn Sie Videos in eine Webseite einfügen und das VLC-Plugin verwenden möchten, müssen Sie auch den Netzwerk-Cache-Parameter des VLC-Plugins konfigurieren, da die Wiedergabe sonst weiterhin durch Stop-and-Go beeinträchtigt wird. Es scheint, dass die Festlegung des Netzwerk-Caches auf 1000 (ms), wie er im VLC-Player standardmäßig eingestellt ist, ausreicht. Die Dokumentation ist – wie üblich – nie ausreichend.
Tschüß, Igino