apache2.2.8 使用 mod_limitipconn 限制用户下载使用线程数目
网站如果提供一些文件下载,最头疼问题,可能就是用户使用多线程下载,
这样很快耗尽服务器资源,特别是对于一些小网站,许多线程同时访问请求,
一定会对服务器造成一定得影响。
这里我演示一个 可以 限制下载使用的线程数目,只适合于apache服务器,呵呵。
首先测试一下,一个test.avi 如果在服务器被下载的情况,在没有使用限制ip并发连接数,
也就是使用下载工具没有限制线程数量。
我现在服务器上有一个 test.avi 文件,再没有任何限制之下,我们使用迅雷下载
并且设置 5 个线程进行下载。看到了吧, 5个线程都正常请求,在同时下载文件。
好,我先把下载文件 暂停了,
下面我们来安装 限制下载使用的线程(也就是限制同一个ip并发数量)
我这里使用 apache 2.2.8版本
1. 先下载 mod-limitipconn
在http://dominia.org/djao/limitipconn2.html上下载对应的版本,我下载的是for apache 2.2的版本(mod-limitipconn-0.23.tar.bz2)。
下载方面,我也会在文章最后提供下载,我现在把它传进Linux下。
2. 安装
- # tar xjvf mod_limitipconn-0.23.tar.bz2
- mod_limitipconn-0.23/
- mod_limitipconn-0.23/Makefile
- mod_limitipconn-0.23/mod_limitipconn.c
- mod_limitipconn-0.23/README
- mod_limitipconn-0.23/ChangeLog
- mod_limitipconn-0.23/INSTALL
- mod_limitipconn-0.23/LICENSE
- # cd mod_limitipconn-0.23
复制代码
这里注意路径,也就是你自己apache安装的路径。
# /usr/local/apache2/bin/apxs -c -i -a mod_limitipconn.c
该步骤会自动将mod_limitipconn.so编译到apache对应的modules目录中,
还会在httpd.conf文件中自动添加loadmodules语句
最后 修改httpd.conf
vi /etc/httpd.conf
我把下面的修改信息 添加到配置文件最后面。
- ExtendedStatus On
- <IfModule limitipconn_module>
- <Location />
- MaxConnPerIP 3
- NoIPLimit image/*
- </Location>
- <Location /mp3>
- MaxConnPerIP 1
- OnlyIPLimit audio/mpeg video
- </Location>
- </IfModule>
复制代码
最后保存退出。
重启apache
- [root@localhost /]# /usr/local/apache2/bin/apachectl stop
- [root@localhost /]# /usr/local/apache2/bin/apachectl start
复制代码
接着再使用迅雷继续下载刚才的视频文件,观察线程链接情况。
可以看到 5个线程中,有2个线程是不能读取数据的,只有3个线程可以进行连接读取数据。
MaxConnPerIP 3 这个就是配置文件中 所限制的 ip并发连接数目,也就是
我们进行下载允许的线程连接数目 |