有个下载站,提供大文件的上传下载服务,没有盗链,都是正常应用,带宽经常占满。后来查到原来有几个用户使用的带宽是百兆光纤,这几个用户一下载,整个服务器的带宽就基本上被用光了,其他用户再来下载,基本上就下载不下来了。
机房给的带宽是百兆共享,最多能用到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
添加如下一行
XML/HTML代码
- LoadModule bw_module modules/mod_bw.so
设置带宽控制策略
我这里的需求有两点,一是只要带宽足够,则尽量给用户最多的带宽;而是如果同时下载人数过多,则给用户保障一个最低带宽,并且尽量平均分配。
XML/HTML代码
- BandWidthModule on
- ForceBandWidthModule On
- BandWidth all 10240000
- MinBandWidth all 204800
在这种情况下,总带宽限制在10M,如果服务器上只有一个用户在下载,那么就给他10M的带宽(如果客户端也能有这么高带宽的话),当有50个用户在下载的话,则保障每个用户都能有200K带宽,当有100个用户在下载的话,则平均每个用户分配100K带宽。
bw_module的策略还有很多种,具体可以看源代码中的mod_bw.txt
我路过一下。
欢迎经常来路过,不收过路费的.