常州五颜六色网络技术有限公司 -> 技术文档 -> 对apache进行一定限度的配置——Apache并发连接数和带宽控制 登录 -> 注册 -> 回复主题 -> 发表主题

deserts 2008-01-27 23:33
提供apache作为http下载服务,但是觉得如果每个人都无限制的开过多的线程,那么服务器的很多服务,肯定无法开展,因此想对apache的http下载进行一定限度的配置。找来找去,找到mod_limitipconn和mod_bandwidth两个模块。
此外kernel-patch-wrr - Extension to traffic Control/network bandwidth management
也是个很好的选择。


更正,前一段时间,曾记录可以如同下面进行配置,但后来发现这个配置法适合于apache1.3,而不适合apache2。之所以成功配置,实际上是没有正常加载相应模组,出现假成功配置现象,故特此更正这种说法。

旧有的apache1.3可以进行如下安装:

引文:


mod_limitipconn是可以采用sudo apt-get install libapache-mod-limitipconn直接安装的,安装的结果如下:

/usr/share/doc/libapache-mod-limitipconn
/usr/share/doc/libapache-mod-limitipconn/copyright
/usr/share/doc/libapache-mod-limitipconn/README.gz
/usr/share/doc/libapache-mod-limitipconn/changelog.gz
/usr/share/doc/libapache-mod-limitipconn/README.Debian
/usr/share/doc/libapache-mod-limitipconn/changelog.Debian.gz
/usr/share/doc/libapache-mod-limitipconn/apachesrc.diff.gz
/usr/lib/apache/1.3/mod_limitipconn.so
/usr/lib/apache/1.3/500mod_limitipconn.info

可见,这两个模块默认支持的是apache1.3,当然这并不能说明apache2不可以调用。在ubuntu server中安装apche2后,其modules位置位于/usr/lib/apache2/modules,很显然,pache2能
调用这两个modules,需要把mod_limitipconn.so和mod_iptos.so连接或者复制到/usr/lib/apache2/modules下:

sudo ln -s /usr/lib/apache/1.3/mod_iptos.so /usr/lib/apache2/modules/mod_iptos.so
sudo ln -s /usr/lib/apache/1.3/mod_limitipconn.so /usr/lib/apache2/modules/mod_limitipconn.so

然后配置/etc/apache2/apache2.conf:
mod_limitipconn的配置采用以下语法结构:

<IfModule mod_limitipconn.so>
<Location /var/www> #限制/var/www目录
MaxConnPerIP 5 #每个IP并发连接数为5个
NoIPLimit image/* #对图片不做IP限制
</Location>
<Location /softwares> #限制/softwares目录
MaxConnPerIP 3 #每个IP并发连接数为3个
OnlyIPLimit audio/mpeg video #只限制视频和音频文件
</Location>
</IfModule>
进行全局设置的时候,把以上代码放在VirtualHost之外,如果对虚拟机限制则放在VirtualHost之内。
以下是VirtualHost的格式:
<VirtualHost xxx.xxx.xxx.xxx>
...
...
</VirtualHost>
修改完毕,然后重启apache2:
sudo /etc/init.d/apache2 restart
出现;
* Forcing reload of apache 2.0 web server...
apache2: Could not determine the server's fully qualified domain name, using *.*.*.* for ServerName
apache2: Could not determine the server's fully qualified domain name, using 61.157.235.176 for ServerName
...done.
这说明配置加载成功。



旧有的apache1.3要限制带宽,还模块mod_limitipconn。

而在apache2下,只需要libapache2-mod-cband就完成以上两个模块的功能,见http://cband.linux.pl/
引文:


mod_cband is an Apache 2 module provided to solve the problem of limiting users' and virtualhosts' bandwidth usage. The current versions can set virtualhosts' and users' bandwidth quotas, maximal download speed (like in mod_bandwidth), requests-per-second speed and the maximal number of simultanous IP connections (like in mod_limitipconn)



采用sudo apt-get install libapache2-mod-cband,安装的结果如下:

/usr/lib/apache2/modules/mod_cband.so
/usr/share/doc/libapache2-mod-cband
/usr/share/doc/libapache2-mod-cband/changelog.gz
/usr/share/doc/libapache2-mod-cband/faq.txt.gz
/usr/share/doc/libapache2-mod-cband/README.Debian
/usr/share/doc/libapache2-mod-cband/copyright
/usr/share/doc/libapache2-mod-cband/examples
/usr/share/doc/libapache2-mod-cband/examples/vhosts.conf.example
/usr/share/doc/libapache2-mod-cband/examples/vhosts2.conf.example
/usr/share/doc/libapache2-mod-cband/examples/vhosts3.conf.example
/usr/share/doc/libapache2-mod-cband/changelog.Debian.gz
/usr/share/doc/libapache2-mod-cband/documentation.txt.gz
/etc/apache2/mods-available
/etc/apache2/mods-available/cband.load
/etc/apache2/mods-available/cband.conf

在debian 系统中,/etc/apache2下是其配置的相关文件,可用模组存放在/etc/apache2/mods-available/中,而启用模组只需要把/etc/apache2/mods-available/中的模组链接到/etc/apache2/mods-enabled即可。

因此,要想cband生效,需要进行如下工作:
sudo ln -s /etc/apache2/mods-available/cband.load /etc/apache2/mods-enabled/cband.load

sudo ln -s /etc/apache2/mods-available/cband.conf /etc/apache2/mods-enabled/cband.conf

如果要限制默个虚拟站点,那么修改/etc/apache2/sites-enabled中的站点配置文件,如果要对所有站点进行限制,那么修改cband.conf文件:

/etc/apache2/sites-enabled中的配置文件,注意:

引文:


NameVirtualHost *
<VirtualHost *>
ServerName www.example.com
ServerAdmin lmingwei@gmail.com

DocumentRoot /var/www
CBandSpeed 10024 600 300 #CBandSpeed 限制 www.example.com 的虚拟主机的总访问速度为 10024kbps, 最大每秒 600个请求和最大每秒 30 0个连接.
CBandRemoteSpeed 210kb/s 3 3 #CBandRemoteSpeed 限制 www.example.com 的虚拟主机的任何个人的访问速度为每秒 210kb, 最大每秒 3 个请求和最大每秒 3 个连接.
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# Uncomment this directive is you want to see apache2's
# default start page (in /apache2-default) when you go to /
#RedirectMatch ^/$ /apache2-default/
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog /var/log/apache2/error.log



而修改cband.conf,其实就是加入:

CBandSpeed 10024 600 300 #CBandSpeed 限制 www.example.com 的虚拟主机的总访问速度为 10024kbps, 最大每秒 600个请求和最大每秒 30 0个连接.
CBandRemoteSpeed 210kb/s 3 3 #CBandRemoteSpeed 限制 www.example.com 的虚拟主机的任何个人的访问速度为每秒 210kb, 最大每秒 3 个请求和最大每秒 3 个连接.


查看完整版本: [-- 对apache进行一定限度的配置——Apache并发连接数和带宽控制 --] [-- top --]



Copyright © 2005-2014 5y6s Inc. 苏ICP备05001866号 Powered by PHPWind 5.0.1
Time 0.015600 second(s),query:3 Gzip enabled