当前位置: 首页 > 图文教程 > 服务器 > Linux服务器 > Linux下Apache并发连接数和带宽控制

Linux服务器
Linux上双网卡绑定方法(Suse9SP3)
Linux操作系统调优参数的意义
Linux下使用SSH客户端及其Sftp文件传送
教你恢复被误删除的Linux文件
SQL Server注入大全及防御
Linux无法解析域名的解决办法
Linux系统下安装和配置MyEclipse的方法
Ubuntu下VirtualBox 1.4.0设置文件共享
Windows与Linux系统共享StarDict字典文件
修改Linux下相关的登陆信息
Windows通过SecureCRT远程登录Linux主机
Linux操作系统如何修改SWAP交换区的大小
Linux操作系统下为Apache目录添加密码
Linux时间设置与同步(NTP)
Linux内核补丁AMD旁路转换缓冲(TLB)错误
Linux架设DHCP服务器的方法
Fedora 8下Apache配置与管理
Linux操作系统下用单网卡捆绑双IP的方法
Ubuntu Linux系统环境变量配置文件
SUSE Linux中将Tomcat作为Service运行

Linux服务器 中的 Linux下Apache并发连接数和带宽控制


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-18   浏览: 40 ::
收藏到网摘: n/a


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/可以找到更多的模块,我们也可以编写自己的模块来实现相应的功能。