Chinaunix首页 | 论坛 | 博客
  • 博客访问: 955338
  • 博文数量: 245
  • 博客积分: 11429
  • 博客等级: 上将
  • 技术积分: 2662
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-15 00:16
文章存档

2011年(56)

2010年(174)

2009年(15)

分类: LINUX

2010-08-12 14:01:38

apache限制并发数,IP,带宽设置

限制并发数
下载模块:

到官方网址: 下载模块



安装:
apxs -c mod_vhost_limit.c -o /path/to/libexec/mod_vhost_limit.so

在 httpd.conf 加入:

LoadModule vhost_limit_module libexec/mod_vhost_limit.so
AddModule mod_vhost_limit.c

配置:

MaxClients 150
ExtendedStatus On

NameVirtualHost *


    ServerName       server1
    DocumentRoot     /some/where/1
    MaxVhostClients  100



    ServerName       server2
    DocumentRoot     /some/where/2
    MaxVhostClients  30



    ServerName       server3
    DocumentRoot     /some/where/3


其中: server1 被限制为 100 个并发线程数。 server2 被限制为 30 个并发线程数。 server3 没有被限制。

注:需 mod_status 的 ExtendedStatus On 支持!!

如超出限制的并发数在客户端就会出现503错误 
----------------------------------------------------------------------------------------------

限制IP连接数

到这里下载模块

安装:
tar zxvf mod_limitipconn-0.04.tar.gz
cd mod_limitipconn-0.04
make APXS=/usr/local/apache/bin/apxs  ß-----这里要按你自己的路径设置
make install APXS=/usr/local/apache/bin/apxs ß-----这里要按你自己的路径设置

编辑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 >

  

或者虚拟主机的:
< VirtualHost xx.xxx.xx.xx > ##ip 地址
    ServerAdmin
    DocumentRoot /home/easy
    ServerName
  < IfModule mod_limitipconn.c >
      < Location / >    
      MaxConnPerIP 5        
          NoIPLimit image/*      
      < /Location >
      < Location /mp3 >    # 所有主机的/mp3目录
      MaxConnPerIP 2         # 每IP只允许一个连接请求    
      OnlyIPLimit audio/mpeg video # 该限制只对视频和音频格式的文件
      < /Location >
  < /IfModule >
  < /VirtualHost >
 
----------------------------------------------------------------------------------------------

限制带宽:

 

下载模块
安装:
/usr/local/apache/bin/apxs -c ./mod_bandwidth.c -o /usr/local/apache/libexec/mod_bandwidth.so  
 

<-------以上/usr/local/apache请设置为你的路径

编辑httpd.conf
添加:
 LoadModule bandwidth_module libexec/mod_bandwidth.so
AddModule mod_bandwidth.c
重启你的apache
from:
----------------------------------------------------------------------------------------------

给大家推荐两个Apache模块,一个是mod_limitipconn,用来控制 Apache的并发联接数,通过该模块可以限制同一来源IP的并发联接数。另一个模块是bw_mod,用于Apache网站带宽控制,可以根据来源IP, 网段来划分带宽,也可以根据网站文件类型来限制带宽,参数比较灵活,可以根据自己实际情况进行调整。
mod_limitipconn官方网址为:
mod_mod官方网址为:
具体安装及配置过程就不介绍了,可以参见官方使用说明,这里只简单地谈谈使用心得。
一、对于mod_limitipconn,其实该模块不仅提供客户端并发联接数的控制 能力,从安全角度来说还可以起到对抗固定来源IP地址发起的 DOS攻击,包括来源固定的大量访问请求型攻击(大量GET或POST请求型的攻击),当同一来源IP地址的联接数超过限定的值后,会弹回对方的访问请 求,给对方一个“503服务临时无效”的响应。当Apache服务器受到大量的访问请求型攻击的时候,由于大量的Apache进程及PHP和MYSQL运 行消耗,会导致服务器资源迅速耗尽,网站打开缓慢或瘫痪。如果是此种类型的攻击,使用mod_limitipconn模块则可以有效地提升服务器的抗攻击 能力,因为大量的请求被弹回,节省了服务器运行PHP及MYSQL的性能消耗。当然只要请求进了80端口,不管是接受还是弹回请求,Aapche都有运行 成本,所以此方法只能是减轻而无法解决,毕竟应用层的处理效率是比较低的。
二、对于网站访问量比较大、使用了mod_limitipconn模块且限制同一客户 端并发联接数低于3的情况下,如果用Apache默认的配置参数,极可能经常出现“服务临时无效”的提示。因为Apache默认是设置 “KeepAlive on”,且“KeepAliveTimeout 180”,所以一旦建立联接,那么在3分钟内这个联接是不会被释放的。所以如果网站不同页面点击频率比较高或图片资源比较多的话,会经常出现服务临时无效 的提示。那么有两种方式去解决,一是加大并发联接数的量,比如设置为普通站点10个并发联接数,图片站点则20个。另一种方式就是如果你不想加大这个值的 话,可以设置KeepAlive为off,然后缩短Timeout时间,这样联接会很快被释放出来。具体情况根据需要去调整测试,以得到一个最适合自己站 点情况的值。
三、如果要同时限制并发联接数与带宽的话,就用 bw_mod+mod_limitipconn,因为虽然bw_mod也可以控制并发联接数,但他是针对某个目录或整个网站的并发联接数,是用来控制服务 器端的总联接数,比如设置MaxConnection all 1000,那么这个网站所能接受的最大并发联接数为1000,而并不是限制每一客户端的并发联接数,而mod_limitipconn则是针对同一来源 IP的客户端的并发联接数,所以这两者的联接数限制是有所区别的。
四、个人感觉用了bw_mod及mod_limitipconn模块后,网站访问速度 有所下降,能凭直观地感觉出来,并且CPU的负载有所上升。特别是在网站访问量比较大的情况下,这两个模块会消耗一定的主机性能,所以轻重权衡这个得大家 自己根据情况来采用了。另外bw_mod里有个参数是用来设置控制精度与频率的,默认是1000毫秒,如果你想提高带宽控制精度就改小这个数值,但会消耗 更多的CPU资源,反之亦然,降低精度可提升性能。
阅读(593) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~