系统集成论坛
标题:
Apache并发连接数和带宽控制
[打印本页]
作者:
狙神
时间:
2009-11-1 17:34
标题:
Apache并发连接数和带宽控制
Apache作为一种http服务,相比FTP总是不容易控制,特别是当网站以http方式提供软件/音乐下载时,若是每个用户都开启多个线程并没有带宽的限制,将很快达到http的最大连接数或者造成网络壅塞,使得网站的许多正常服务都无法运行。
不过,Apache的使用者们早已开发出了mod_limitipconn和mod_bandwidth两个模块,来控制http的并发连接数和用户所能够使用的带宽.
一、使用mod_limitipconn限制Apache的并发连接数
mod_limitipconn可以控制每个IP地址同时连接服务器某一个目录的并发连接数.
首先检查Apache模块目录,看是否含有mod_limitipconn.so文件.
在httpd.conf中添加
LoadModule limitipconn_module modules/mod_limitipconn.so
AddModule mod_limitipconn.c
然后请确认mod_status模块已经加载,并且在mod_status下添加了ExtendedStatus On这一行。
这时我们的mod_limitipconn模块就安装完毕,下一步就是对某个目录进行并发连接数的设置了。
mod_limitipconn可以对全局和虚拟主机进行不同的限制,其语法结构都是
<IfModule mod_limitipconn.c>
<Location /> #所限制的目录所在,此处表示主机的根目录
MaxConnPerIP 3 #所限制的每个IP并发连接数为3个
NoIPLimit image/* #对图片不做IP限制
</Location>
<Location /mp3> #所限制的目录所在,此处表示主机的/mp3目录
MaxConnPerIP 1 #所限制的每个IP并发连接数为1个
OnlyIPLimit audio/mpeg video #该限制只对视频和音频格式的文件
</Location>
</IfModule>
当对全局进行限制时,将这段代码放在httpd.conf文件没有VirtualHost的地方,
若是对某个虚拟主机进行限制,请将其放在和之间,
我们可以通过更改Location以及MaxConnPerIP方便的控制所限制的目录和并发连接数。
二、使用mod_bandwidth控制Apache的带宽
先确认httpd.conf中是否含有
LoadModule bandwidth_module modules/mod_bandwidth.so
AddModule mod_bandwidth.c
并且这两行必须分别加在相应区域的最前面,使得这个模块以最低的优先级运行.
然后再打开httpd.conf文件,加上以下内容
<IfModule mod_bandwidth.c>
BandWidthDataDir "/tmp/apachebw/"
BandWidthModule on
</IfModule>
这时,我们就能够对所需要限制带宽的目录进行相应的设置,此处的目录请使用服务器的绝对路径。
如我们想限制服务器/home/www/thinkjam/download/soft目录的下载速度,也就是限制网址http://download.thinkjam.org/soft目录下软件的下载速度,则为httpd.conf文件增加以下内容
<Directory /home/www/thinkjam/download/soft>
BandWidth thinkjam.org 0 #来自thinkjam.org的下载不受速度限制
BandWidth 210.51.21 0 #来自210.51.21网段的下载不受速度限制
BandWidth all 327680 #来自其它网段的速度都限制为327680Byte,即30KB/s
</Directory>
设置完毕后,重新启动Apache服务,即可生效。
mod_bandwidth还有许多其它有用的参数,如在中间加上MaxConnection
120则可以限制某个目录的最多连接数,当超过指定连接数时,拒绝新的连接,此参数与mod_limitipconn模块结合可以控制某个目录的最多连接人数。
欢迎光临 系统集成论坛 (http://bbs.xtjc.com/)
Powered by Discuz! X3.1