apache:用 mod_limitipconn.c来限制apache的并发数
时间:2010-07-21 来源:szxsztszk
使用mod_limitipconn.c来限制apache的并发数
下载mod_limitipconn.c
http://dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz
http://dominia.org/djao/limit/mod_limitipconn-0.04-1.i386.rpm
(proxy client detection feature not enabled)
http://dominia.org/djao/limit/mod_limitipconn-0.04-1.src.rpm
我 用的是tar包下载的是mod_limitipconn-0.04.tar.gz,(该模块已经可以支持apache2)在服务器上执 行# wget http://dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz 下载到本地
然 后执行下面的命令编译安装.我的apache位于/usr/local/apache目录
解压缩:
[root@ns chenlf]# tar zxvf mod_limitipconn-0.04.tar.gz
mod_limitipconn-0.04/
mod_limitipconn-0.04/Makefile
mod_limitipconn-0.04/README
mod_limitipconn-0.04/apachesrc.diff
mod_limitipconn-0.04/mod_limitipconn.c
mod_limitipconn-0.04/ChangeLog
编译安装:
[root@ns chenlf]# cd mod_limitipconn-0.04
[root@ns mod_limitipconn-0.04]# ls
apachesrc.diff ChangeLog Makefile
mod_limitipconn.c README
[root@ns mod_limitipconn-0.04]
# /usr/local/apache/bin/apxs -c -i -a mod_limitipconn.c
gcc -DLINUX=22 -I/usr/include/db1 -fpic -DSHARED_MODULE -I
/usr/local/apache/include -c mod_limitipconn.c
gcc -shared -o mod_limitipconn.so mod_limitipconn.o
[activating module `limitipconn' in /usr/local
/apache/conf/httpd.conf]
cp mod_limitipconn.so /usr/local/apache/libexec/mod_limitipconn.so
chmod 755 /usr/local/apache/libexec/mod_limitipconn.so
cp /usr/local/apache/conf/httpd.conf
/usr/local/apache/conf/httpd.conf.bak
cp /usr/local/apache/conf/httpd.conf.new
/usr/local/apache/conf/httpd.conf
rm /usr/local/apache/conf/httpd.conf.new
修改配置文件:
1全局控制:
在httpd.conf加上以下几行:
< 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 >
2 局部限制,你也可以在虚拟主机的配置文件里设置IP限制,方法是完全一样:
< VirtualHost xx.xxx.xx.xx >
ServerAdmin [email protected]
DocumentRoot /home/my
ServerName www.my.com
< IfModule mod_limitipconn.c >
< Location / > # 所 有虚拟主机的/目录
MaxConnPerIP 5 # 每IP只允许3个并发连接
NoIPLimit image/* # 对 图片不做IP限制
< /Location >
< Location /mp3 > # 所 有主机的/mp3目录
MaxConnPerIP 2 # 每IP只允许一个连接请求
OnlyIPLimit audio/mpeg video # 该 限制只对视频和音频格式的文件
< /Location >
< /IfModule >
ErrorLog /home/my/logs/error_log
CustomLog /home/my/logs/access_log common
< /VirtualHost >
3 此外必须将apache的ExtendedStatus设置为ON.在httpd.conf找到
# ExtendedStatus On
去掉前面的注释即可
好了,全部配置结束,重起apache就可以生效了 (完)
------------------------------------------
-------------------------------
http://dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz
http://dominia.org/djao/limit/mod_limitipconn-0.04-1.i386.rpm
(proxy client detection feature not enabled)
http://dominia.org/djao/limit/mod_limitipconn-0.04-1.src.rpm
我 用的是tar包下载的是mod_limitipconn-0.04.tar.gz,(该模块已经可以支持apache2)在服务器上执 行# wget http://dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz 下载到本地
然 后执行下面的命令编译安装.我的apache位于/usr/local/apache目录
解压缩:
[root@ns chenlf]# tar zxvf mod_limitipconn-0.04.tar.gz
mod_limitipconn-0.04/
mod_limitipconn-0.04/Makefile
mod_limitipconn-0.04/README
mod_limitipconn-0.04/apachesrc.diff
mod_limitipconn-0.04/mod_limitipconn.c
mod_limitipconn-0.04/ChangeLog
编译安装:
[root@ns chenlf]# cd mod_limitipconn-0.04
[root@ns mod_limitipconn-0.04]# ls
apachesrc.diff ChangeLog Makefile
mod_limitipconn.c README
[root@ns mod_limitipconn-0.04]
# /usr/local/apache/bin/apxs -c -i -a mod_limitipconn.c
gcc -DLINUX=22 -I/usr/include/db1 -fpic -DSHARED_MODULE -I
/usr/local/apache/include -c mod_limitipconn.c
gcc -shared -o mod_limitipconn.so mod_limitipconn.o
[activating module `limitipconn' in /usr/local
/apache/conf/httpd.conf]
cp mod_limitipconn.so /usr/local/apache/libexec/mod_limitipconn.so
chmod 755 /usr/local/apache/libexec/mod_limitipconn.so
cp /usr/local/apache/conf/httpd.conf
/usr/local/apache/conf/httpd.conf.bak
cp /usr/local/apache/conf/httpd.conf.new
/usr/local/apache/conf/httpd.conf
rm /usr/local/apache/conf/httpd.conf.new
修改配置文件:
1全局控制:
在httpd.conf加上以下几行:
< 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 >
2 局部限制,你也可以在虚拟主机的配置文件里设置IP限制,方法是完全一样:
< VirtualHost xx.xxx.xx.xx >
ServerAdmin [email protected]
DocumentRoot /home/my
ServerName www.my.com
< IfModule mod_limitipconn.c >
< Location / > # 所 有虚拟主机的/目录
MaxConnPerIP 5 # 每IP只允许3个并发连接
NoIPLimit image/* # 对 图片不做IP限制
< /Location >
< Location /mp3 > # 所 有主机的/mp3目录
MaxConnPerIP 2 # 每IP只允许一个连接请求
OnlyIPLimit audio/mpeg video # 该 限制只对视频和音频格式的文件
< /Location >
< /IfModule >
ErrorLog /home/my/logs/error_log
CustomLog /home/my/logs/access_log common
< /VirtualHost >
3 此外必须将apache的ExtendedStatus设置为ON.在httpd.conf找到
# ExtendedStatus On
去掉前面的注释即可
好了,全部配置结束,重起apache就可以生效了 (完)
------------------------------------------
apache2.0 prefork模式下: |
在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。根据我的测试结果,Nginx 0.5.33 + PHP 5.2.5 (FastCGI) 可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍。
根据我的经验,4GB内存的服务器+Apache(prefork模式)一般只能处理3000个并发连接,因为它们将占用3GB以上的内存,还得为系统预留1GB的内存。我曾经就有两台Apache服务器,因为在配置文件中设置的MaxClients为4000,当Apache并发连接数达到3800时,导致服务器内存和Swap空间用满而崩溃。
而这台 Nginx 0.5.33 + PHP 5.2.5 (FastCGI) 服务器在3万并发连接下,开启的10个Nginx进程消耗150M内存(15M*10=150M),开启的64个php-cgi进程消耗1280M内存(20M*64=1280M),加上系统自身消耗的内存,总共消耗不到2GB内存。如果服务器内存较小,完全可以只开启25个php-cgi进程,这样php-cgi消耗的总内存数才500M。
在3万并发连接下,访问Nginx 0.5.33 + PHP 5.2.5 (FastCGI) 服务器的PHP程序,仍然速度飞快。下图为Nginx的状态监控页面,显示的活动连接数为28457
------------ 张宴
相关阅读 更多 +
排行榜 更多 +