Linux下Apache并发连接数和带宽控制
点击次数:28 次 发布日期:2008-11-22 09:41:35 作者:源代码网
|
源代码网推荐Linux+Apache的稳定性、安全性和性能以及低廉的价格正在赢得越来越多的市场份额,使用Linux+Apache作网站服务器的朋友也越来越多,而Apache作为一种http服务,相比FTP总是不容易控制,特别是当网站以http方式提供软件/音乐下载时,若是每个用户都开启多个线程并没有带宽的限制,将很快达到http的最大连接数或者造成网络壅塞,使得网站的许多正常服务都无法运行。不过,Apache的使用者们早已开发出了mod_limitipconn和mod_bandwidth两个模块,来控制http的并发连接数和用户所能够使用的带宽,下面将以RedHatLinux7.3+Apache1.3.7来说明它们的使用方法。 源代码网推荐 源代码网推荐一、使用mod_limitipconn限制Apache的并发连接数 源代码网推荐 源代码网推荐mod_limitipconn可以控制每个IP地址同时连接服务器某一个目录的并发连接数,是一个非常有用的模块,其官方网页是http://dominia.org/djao/limitipconn.html,最新版本为forApache1.3.7的0.04,并且还有支持Apache2.x的模块下载,由于本人使用Apache1.3.7版本,所以请使用2.x版本Apache的朋友到其官方网站察看具体的使用方法。 源代码网推荐 源代码网推荐mod_limitipconnforApache1.3x提供三种安装方式,分别是tar包、rpm安装文件和rpm源文件,由于rpm包只能用在RedHat7.x版本,并且不支持检测代理服务器,所以我们一般都使用tar包的安装方式。 源代码网推荐 源代码网推荐以管理员方式登陆服务器,然后在服务器上运行wgethttp://dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz将mod_limitipconn的tar包下载到服务器,然后按照再运行tarzxvfmod_limitipconn-0.04.tar.gz将tar包解压缩,会在当前目录下生成mod_limitipconn-0.04目录,然后cdmod_limitipconn-0.04进入此目录,下一步就是使用apxs将目录中的mod_limitipconn.c编译。这时,我们需要确定自己的Apache安装在那个目录,并且找到apxs命令放在哪里。 源代码网推荐 源代码网推荐通过命令whereisapxs,我们可以确定apxs命令的路径,如我的apxs命令所在为/usr/sbin/apxs,则输入/usr/sbin/apxs-c-i-amod_limitipconn.c对mod_limitipconn.c进行编译,此命令会自动在你Apache的配置文件httpd.conf中加入需要的信息,并且将生成的mod_limitipconn.so模块拷贝到Apache的模块目录。不过为了确认此命令是否正常运作,请首先检查自己的Apache模块目录(我的是/usr/lib/apache),看内部是否含有mod_limitipconn.so文件,没有的话请将mod_limitipconn-0.04目录中生成的文件拷贝到此处。 源代码网推荐 源代码网推荐刚才命令自动生成的httpd.conf可能有些错误,在我的系统中,它将LoadModulelimitipconn_modulemodules/mod_limitipconn.so放在了 源代码网推荐 源代码网推荐<IfDefineHAVE_PYTHON> 源代码网推荐LoadModulepython_modulemodules/mod_python.so 源代码网推荐</IfDefine> 源代码网推荐之间,而将AddModulemod_limitipconn.c放在了 源代码网推荐 源代码网推荐<IfDefineHAVE_PYTHON> 源代码网推荐AddModulemod_python.c 源代码网推荐</IfDefine> 源代码网推荐之间,直接造成了mod_limitipconn模块不能正常运行,所以请将这两行分别移动到没有<IfDefine></IfDefine>的相应行中,然后请确认mod_status模块已经加载,并且在mod_status下添加了ExtendedStatusOn这一行。这时我们的mod_limitipconn模块就安装完毕,下一步就是对某个目录进行并发连接数的设置了。 源代码网推荐 源代码网推荐mod_limitipconn可以对全局和虚拟主机进行不同的限制,其语法结构都是 源代码网推荐 源代码网推荐<IfModulemod_limitipconn.c> 源代码网推荐<Location/>#所限制的目录所在,此处表示主机的根目录 源代码网推荐MaxConnPerIP3#所限制的每个IP并发连接数为3个 源代码网推荐NoIPLimitimage/*#对图片不做IP限制 源代码网推荐</Location> 源代码网推荐<Location/mp3>#所限制的目录所在,此处表示主机的/mp3目录 源代码网推荐MaxConnPerIP1#所限制的每个IP并发连接数为1个 源代码网推荐OnlyIPLimitaudio/mpegvideo#该限制只对视频和音频格式的文件 源代码网推荐</Location> 源代码网推荐</IfModule> 源代码网推荐当对全局进行限制时,将这段代码放在httpd.conf文件没有VirtualHost的地方,若是对某个虚拟主机进行限制,请将其放在<VirtualHostxxx.xxx.xxx.xxx>和</VirtualHost>之间,我们可以通过更改Location以及MaxConnPerIP方便的控制所限制的目录和并发连接数。 源代码网推荐 源代码网推荐最后,只要重新启动Apache服务,并发连接数的限制就可以生效。 源代码网推荐 源代码网推荐二、使用mod_bandwidth控制Apache的带宽 源代码网推荐 源代码网推荐Apache1.3.7实际上带有mod_bandwidth支持,只是没有此模块的so文件,我们所做的就是下载mod_bandwidth的源文件进行编译,并对mod_bandwidth进行相应的设置。 源代码网推荐 源代码网推荐在下载之前,请先确认自己的Apache配置文件httpd.conf中是否含有 源代码网推荐 源代码网推荐<IfDefineHAVE_BANDWIDTH> 源代码网推荐LoadModulebandwidth_modulemodules/mod_bandwidth.so 源代码网推荐</IfDefine> 源代码网推荐以及 源代码网推荐 源代码网推荐<IfDefineHAVE_BANDWIDTH> 源代码网推荐AddModulemod_bandwidth.c 源代码网推荐</IfDefine> 源代码网推荐若是没有,请加上 源代码网推荐 源代码网推荐LoadModulebandwidth_module 源代码网推荐libexec/apache/mod_bandwidth.so 源代码网推荐AddModulemod_bandwidth.c 源代码网推荐 源代码网推荐并且这两行必须分别加在相应区域的最前面,使得这个模块以最低的优先级运行。(不过1.3.7的Apache应该有,呵呵)。 源代码网推荐 源代码网推荐确认后,请输入wgetftp://ftp.cohprog.com/pub/apache/module/1.3.0/mod_bandwidth.c将源文件下载到服务器,然后请使用apxs对其进行编译,编译方法和mod_limitipconn的基本相同,如我输入/usr/sbin/apxs-cmod_bandwidth.c-o/usr/lib/apache(Apache的模块目录),编译程序会自动将编译成功的mod_bandwidth.so文件放到Apache的模块目录,您也可以自己确认一下,若是不正常,拷贝过去即可。 源代码网推荐 源代码网推荐mod_bandwidth运行时需要一些特定的目录,按照默认情况,请运行以下命令创建并更改目录的权限: 源代码网推荐 源代码网推荐mkdir/tmp/apachebw 源代码网推荐mkdir/tmp/apachebw/link 源代码网推荐mkdir/tmp/apachebw/master 源代码网推荐chmod-R777/tmp/apachebw 源代码网推荐然后再打开httpd.conf文件,加上以下内容 源代码网推荐 源代码网推荐<IfModulemod_bandwidth.c> 源代码网推荐BandWidthDataDir"/tmp/apachebw/" 源代码网推荐BandWidthModuleon 源代码网推荐</IfModule> 源代码网推荐 源代码网推荐这时,我们就能够对所需要限制带宽的目录进行相应的设置,此处的目录请使用服务器的绝对路径。如我们想限制服务器/home/www/thinkjam/download/soft目录的下载速度,也就是限制网址http://download.thinkjam.org/soft目录下软件的下载速度,则为httpd.conf文件增加以下内容 源代码网推荐 源代码网推荐<Directory/home/www/thinkjam/download/soft> 源代码网推荐BandWidththinkjam.org0#来自thinkjam.org的下载不受速度限制 源代码网推荐BandWidth210.51.210#来自210.51.21网段的下载不受速度限制 源代码网推荐BandWidthall327680#来自其它网段的速度都限制为327680Byte,即30KB/s 源代码网推荐</Directory> 源代码网推荐 源代码网推荐设置完毕后,重新启动Apache服务,即可生效。 源代码网推荐 源代码网推荐mod_bandwidth还有许多其它有用的参数,如在中间加上MaxConnection120则可以限制某个目录的最多连接数,当超过指定连接数时,拒绝新的连接,此参数与mod_limitipconn模块结合可以控制某个目录的最多连接人数。 源代码网推荐 源代码网推荐其它的参数请朋友们到其官方网站http://www.cohprog.com/v3/bandwidth/doc-en.html察看相关的文档。 源代码网推荐 源代码网推荐Apache的功能确实强大,很多功能都可以通过添加模块来实现,在http://modules.apache.org/可以找到更多的模块,我们也可以编写自己的模块来实现相应的功能。源代码网供稿. |
