利用Limit模块限制IP连接数 系统版本:centos6.3 APACHE版本:apache2.42(编译安装) 1.配置Limit模块 #wget http://dominia.org/djao/limit/mod_limitipconn-0.24.tar.bz2 安装: #tar jxvf mod_limitipconn-0.24.tar.bz2 #cd mod_limitipconn-0.24 #vi Makefile 找到APXS这行,改成 APXS=/usr/local/apache2/bin/apxs #make && make install 全局变量范例: < IfModule mod_limitipconn.c > < Location / > # 所有虚拟主机的/目录 MaxConnPerIP 3 # 每IP只允许3个并发连接 NoIPLimit image/* # 对图片不做IP限制 < /Location > < Location /mp3 > # 所有主机的/mp3目录 MaxConnPerIP 1 # 每IP只允许一个连接请求 OnlyIPLimit audio/mpeg video # 该限制只对视频和音频格式的文件 < /Location > < /IfModule > # vi /usr/local/apache2/conf/httpd.conf --------------------
ExtendedStatus On LoadModule limitipconn_module modules/mod_limitipconn.so <IfModule mod_limitipconn.c> <Location /> MaxConnPerIP 6 NoIPLimit image/* </Location> </IfModule> -------------------
2、配置webbench对网站进行压力测试: #wget http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar.gz #tar zxvf webbench-1.5.tar.gz #cd webbench-1.5 #make && make install
3、使用: webbench -c 500 -t 30 http://127.0.0.1/ 参数说明:-c表示并发数,-t表示时间(秒)
4、测试结果示例: Webbench - Simple Web Benchmark 1.5 Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://127.0.0.1/ 500 clients, running 30 sec. Speed=3230 pages/min, 11614212 bytes/sec. Requests: 1615 susceed, 0 failed.
Apache最大的优点在于它是个模块化的程序,缺乏什么样的功能就可以单独开发相应的功能模块,然 后加到Apache上就可以了,项目中一个客户的平台上资源较多,很多人都用多线程下载工具下载,导致 服务器负载很大,于是便想到了限制IP的连接数,如果Apache是1.x版本的,那么从 http://dominia.org/djao/limitipconn.html 这里下载对应的Linux版本的(windows的没有),如果是 2.x版本的,那么从http://dominia.org/djao/limitipconn2.html下载Linux的或者Windows的,如果用 在Linux上,那么安装方法上面写的很清楚,如果是windows的,把下载的release目录下的 mod_limitipconn.dll放到Apache的安装目录的modules目录下; httpd.conf中的LoadModule status_module modules/mod_status.so,把这句话前面的#去掉,然后加入 如下内容 ExtendedStatus On LoadModule limitipconn_module modulesmod_limitipconn.dll 里面/resource是制定限定IP的目录,然后MaxConnPerIP是限定每个IP的并发连接数,NoIPLimit image/* 是排除resource下不限定的目录。
wget http://dominia.org/djao/limit/mod_limitipconn-0.24.tar.bz2 编辑httpd.conf ExtendedStatus On 如果想限制虚拟主机的ip并发连接数,可以修改extra/httpd-vhost.conf把 IfModule mod_limitipconn.c 这一段复制到Virtualhost中就可以了。 测试: 就可以弹出503错误 使用mod_bandwidth模块限制带宽 控制。 wget http://bwmod.sourceforge.net/files/mod_bw-0.7.tgz LoadModule bw_module modules/mod_bw.so BandWidth localhost 0 #对localhost不限速 |