文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>apache:用 mod_limitipconn.c来限制apache的并发数

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就可以生效了 (完)
------------------------------------------
apache2.0 prefork模式下:

-------------------

servrelimit:指系统限制最大的进程数.最大是可以到20000的.

servrelimit的值肯定要远大于apache的MaxClients的值。

PS:如果将ServerLimit设置成一个高出实际需要许多的值,将会有过多的共享内存被分配。如果将ServerLimit和MaxClients设置成超过系统的处理能力,



Apache可能无法启动,或者系统将变得不稳定。



MaxClients:是这些指令中最为重要的一个,

设定的是Apache可以同时处理的请求,是对Apache性能影响最大的参数。其缺省值150是远远不够的,如果请求总数已达到这个值(可通过ps -ef|grep http|wc



-l来确认),那么后面的请求就要排队,直到某个已处理请求完毕。这就是系统资源还剩下很多而HTTP访问却很慢的主要原因。



MaxRequestsPerChild:每个子进程在其生存期内允许伺服的最大请求数量

中南民族大学网站主Web服务器(www.scuec.edu.cn)故障排查报告

  故障时间:2006年6月26日、27日

  硬件环境:惠普HP ProLiant ML570G3 (348137-AA1):4至强(XEON)3.0G CPU;8GB内存

  软件配置:Windows 2003:Apache 2.0.55、PHP 5.1.2、MySQL 4、Symantec AntiVirus 10

  故障描述:Web服务器访问不稳定,表现为每当浏览网页几分钟后就不能访问。下午4点左右Web服务器瘫痪,重新启动服务器后恢复,但故障依旧。今天再



次发生此问题。

  排查经过:

  1、怀疑中了蠕虫病毒,用Symantec AntiVirus 10全盘查毒后未发现。

  2、怀疑Apache或MySQL文件损坏,排查后发现文件正确无误,没有缺少。

  3、怀疑高考填报志愿期间,学校网站访问人数增多,但昨天一直很正常,从Apache日志中也看不出这种迹象。

  4、怀疑有人用DDoS分布式拒绝服务攻击服务器,将Apache的httpd.conf中的Timeout 300改为Timeout 120,访问速度好了些,但依旧不快。

  5、用netstat –an多次查看网络状况,发现几个可疑IP段不停地访问服务器,状态为TIME_WAIT。

  6、锁定了几个可疑IP地址段:202.181.33.xxx、202.160.178.1-202.160.180.254、202.165.102.xxx,特别是来自202.160.178.1-202.160.180.254的访



问几乎类似202.160.178.1、202.160.178.2、202.160.178.3一样一个接着一个。

  7、追查可疑IP来源,发现除了202.181.33.xxx来自香港外,其它IP地址均来自雅虎中国。

  8、由此断定这些同时在线的将近1000个IP地址连接记录是雅虎中国的搜索引擎爬虫(Robots,一般翻译为机器人)疯狂地一遍又一遍抓取中南民族大学网



站内容而留下的,加剧了网站的流量。

  10、为了通过搜索引擎达到宣传中南民族大学网站的目的,我不能直接封掉这些搜索引擎爬虫的IP地址,只能加大Apache服务器的访问负载能力。

  11、尝试了N种方法试图加大Apache服务器的访问负载能力,均告失败。

  12、发现Apache的子进程Apache.exe占用的内存值从开始的100多M慢慢爬升到900多M就不动了,而此时网页恰好无法访问。终于找到了故障所在。

  13、打开Apache的配置文件httpd.conf,将MaxRequestsPerChild的值设为100,重启Apache,故障解决。MaxRequestsPerChild用于控制服务器建立和结束



Apache.exe子进程的频率,如果线程大于100,则结束Apache.exe子进程,释放内存,同时开启一个新的Apache.exe子进程来处理访问请求。
-------------------------------
在高并发连接的情况下,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

------------ 张宴

相关阅读 更多 +
排行榜 更多 +
胜利女神新的希望小米服手游下载

胜利女神新的希望小米服手游下载

角色扮演 下载
我要当老板伐木工厂游戏下载

我要当老板伐木工厂游戏下载

模拟经营 下载
涡轮螺旋桨最新版下载

涡轮螺旋桨最新版下载

模拟经营 下载