Apache 2.2 (windows) 有預設頻寬限制嗎?

Apache 2.2 (windows) 有預設頻寬限制嗎?

我在雲端伺服器上執行 Apache(VMware 上的 Windows Server 2008 R2,1 Gbps 的 BW http://95.110.164.61)。我正在串流許多即時 DVB MPEG 傳輸串流,循環預壓縮,由 VLC 在連接埠 640xx 上產生(不是快閃記憶體),然後由 Apache 在連接埠 80 上反向代理。

伺服器的防火牆在所有連接埠上對 VLC 和 Apache 開放。

超過 1.5 Mbps 時,再現會受到連續走走停停的影響。請注意,如果您直接要求 VLC 產生的串流,http://95.110.164.61:64087/mpg2_6.4您會看到正確的串流,而如果您要求,則http://95.110.164.61/mpg2_6.4看不到。

我知道 Flash 流伺服器使用 Apache 在連接埠 80 上進行串流傳輸(而且它可以運作)。我不是 Apache 專家,誰能告訴我是否需要任何“特殊”模組來增加頻寬?

答案1

Apache 預設情況下沒有任何速率限製或頻寬限制。事實上,只有外部模組提供此功能,因此您必須付出特別的努力才能啟用它。

預設情況下,Apache 將使用盡可能多的頻寬。

答案2

Igino Manfre 仍在寫作(請不要忘記,我是 Apache 新手)。

也許它不應該被描述為頻寬限制,但最終的結果是相同的:如果 Apache 沒有正確配置,它就無法透過網路推送足夠的資訊。

Windows 下的此活動由 Apache 多執行緒模組(Windows 下唯一可用的模組,正式名稱為多處理模組,但通常稱為「Workers」)完成,在任何情況下都需要對其進行設定。當 Apache 在 Windows 下運行時,您會發現只有兩個進程“httpd”,一個是另一個進程的子進程。子進程透過連線來啟動所有所需的執行緒。在 Apache 文件中,我發現需要一個特定於任何作業系統的部分,可以從 extra\httpd-mpm.conf 複製並貼上到 httpd.conf 中。 Windows 預設部分僅在標籤「IfModule mpm_winnt_module」中包含兩行來管理多執行緒。

ThreadsPerChild:伺服器程序中工作執行緒的常數(設定為 150)

MaxRequestsPerChild:伺服器程序服務的最大請求數(設定 0,自動)

但在這種情況下,這不是軟體效率的問題(線程也是如此),而可能是網路緩衝的問題。我在 Apache 的大量文件中發現了 SendBufferSize 參數的存在(將添加到 httpd.conf 中)。它增加了 TCP 發送緩衝區大小,可用於補償 RTT 超過 100 毫秒的高延遲連線(如正常 ADSL 家庭連線)。預設或當為0時,伺服器將使用作業系統預設值。

發送緩衝區大小 1000000

我決定將其設為 1000000 (1 MB),這聽起來可能是一個很大的數字,但我已經看到了這些高值的使用情況。

很好用!使用 VLC 播放器開啟串流,現在 Apache 的串流傳輸速度為 6.4 Mbps,與 VLC 相同。這意味著瓶頸已經被消除。透過科學方法,我測試過,註釋此參數後,串流媒體會再次出現停頓現象。

在任何情況下,要正確查看串流,您的連線頻寬都需要比播放該串流所需的頻寬足夠大(例如,至少 30%),因此要查看 6.4 Mbps,您至少需要 8 Mbps。

我希望這些線路對其他人有幫助。

另外要注意的是,在網頁中引入影片並希望使用VLC插件時,還需要配置VLC插件的網路快取參數,否則仍會因走走停停而影響播放。看來,修復 VLC 播放器中預設設定的 network-cache=1000(毫秒)就足夠了。像往常一樣,文檔是遠遠不夠的。

再見,伊吉諾

相關內容