有個下載站,提供大文件的上傳下載服務,沒有盜鏈,都是正常應用,帶寬經常占滿。后來查到原來有幾個用戶使用的帶寬是百兆光纖,這幾個用戶一下載,整個服務器的帶寬就基本上被用光了,其他用戶再來下載,基本上就下載不下來了。
機房給的帶寬是百兆共享,最多能用到10M,為了能充分合理的使用帶寬,這里使用了apache的bw_module。
安裝
wget
http://apache.ivn.cl/files/source/mod_bw-0.8.tgz
tar xzvf mod_bw-0.8.tgz
cd mod_bw
/usr/local/apache/bin/apxs -i -a -c
mod_bw.c
配置
編輯httpd.conf
添加如下一行
引用
LoadModule bw_module
modules/mod_bw.so
設置帶寬控制策略
我這里的需求有兩點,一是只要帶寬足夠,則盡量給用戶最多的帶寬;而是如果同時下載人數過多,則給用戶保障一個最低帶寬,并且盡量平均分配。
引用
BandWidthModule on
ForceBandWidthModule
On
BandWidth all 10240000
MinBandWidth all
204800
在這種情況下,總帶寬限制在10M,如果服務器上只有一個用戶在下載,那么就給他10M的帶寬(如果客戶端也能有這么高帶寬的話),當有50個用戶在下載的話,則保障每個用戶都能有200K帶寬,當有100個用戶在下載的話,則平均每個用戶分配100K帶寬。
bw_module的策略還有很多種,具體可以看源代碼中的mod_bw.txt