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

给大家推荐两个Apache模块,一个是mod_vhost_limit,用来限制请求并发数,一个是mod_limitipconn,用来控制 Apache的并发联接数,通过该模块可以限制同一来源IP的并发联接数。另一个模块是bw_mod,用于Apache网站带宽控制,可以根据来源IP, 网段来划分带宽,也可以根据网站文件类型来限制带宽,参数比较灵活,可以根据自己实际情况进行调整。

限制并发数

到官方网址: http://ivn.cl/category/apache/ (看不懂的,直接查找mod_vhost_limit)

安装:

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 *

<VIRTUALHOST * />
ServerName server1
DocumentRoot /some/where/1
MaxVhostClients 100

<VIRTUALHOST * />
ServerName server2
DocumentRoot /some/where/2
MaxVhostClients 30

<VIRTUALHOST * />
ServerName server3
DocumentRoot /some/where/3 

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

注:需 mod_status 的 ExtendedStatus On 支持!!

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

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

限制IP连接数

到这里下载模块 http://dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz

安装:

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 [email protected]
    DocumentRoot /home/easy
    ServerName www.phpv.net
  < IfModule mod_limitipconn.c >
   < Location / >
      MaxConnPerIP 5
  NoIPLimit image/*
   < /Location >
  < Location /mp3 > # 所有主机的/mp3目录
      MaxConnPerIP 2 # 每IP只允许一个连接请求
      OnlyIPLimit audio/mpeg video # 该限制只对视频和音频格式的文件
  < /Location >
  < /IfModule >
< /VirtualHost > 

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

限制带宽:

下载模块 ftp://ftp.cohprog.com/pub/apache/module/1.3.0/mod_bandwidth.c

安装:

/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: http://www.phpv.net/article.php/300

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

一、对于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资源,反之亦然,降低精度可提升性能。

时间: 2024-08-28 12:44:13

apache限制并发数,IP,带宽设置的相关文章

apache 限制连接并发数和下载速度

apache 限制并发数 需要安装:mod_limitipconn模块 安装方法:yum install mod_limitipconn 安装完成后: 检查 Apache 模块目录,看是否含有 mod_limitipconn.so 文件. 在 httpd.conf 中添加 ExtendedStatus On LoadModule limitipconn_module modules/mod_limitipconn.so 虚拟主机文件中添加: <IfModule mod_limitipconn.c

Nginx限制ip链接数,Nginx如何限制并发数,同1个IP,nginx怎么限制流量/限制带宽?

nginx 限制ip并发数,也是说限制同一个ip同时连接服务器的数量.如何Nginx限制同一个ip的连接数,限制并发数目,限制流量/限制带宽? 通过下面nginx模块的使用,我们可以设置一旦并发链接数超过我们的设置,将返回503错误给对方.这样可以非常有效的防止CC攻击.在配合 iptables防火墙,基本上CC攻击就可以无视了.Nginx限制ip链接数,Nginx如何限制并发数,同1个IP,nginx怎么限制流量/限制带宽?请看下文: nginx 限制ip并发数,nginx限制IP链接数的范例

使用测试工具时候如何计算设置并发数?

方法论-1: 同时在线用户数:平均并发数:并发用户数峰值: 在实际的性能测试工作中,测试人员一般比较关心的是业务并发用户数,也就是从业务角度关注究竟应该设置多少个并发数比较合理,因此,在后面的讨论中,也是主要针对业务并发用户数进行讨论,而且,为了方便,直接将业务并发用户数称为并发用户数. (1)  计算平均的并发用户数: C = nL/T                     即:平均并发数=总用户数*用户在线时长/总工作时间 (2)  并发用户数峰值: C’ ≍ C+3*SQRT(C) 即:

windows下修改apache并发数

还没有尝试 修改apache的最大连接数,方法如下: 步骤一 先修改 /path/apache/conf/httpd.conf文件. # vi httpd.conf 将“#Include conf/extra/httpd-mpm.conf”前面的 “#” 去掉,保存. 步骤二 再修改 /path/apache/conf/extra/httpd-mpm.conf文件. # vi httpd-mpm.conf 找到 这一行 原: StartServers 5 MinSpareServers 5 Ma

linux上apache并发数与服务器内存关系计算!

Linunx(本次为ubuntu) apache! 连接数理论上当然是支持越大越好,但要在服务器的能力范围内,这跟服务器的CPU.内存.带宽等都有关系. 查看当前的连接数可以用: ps aux | grep httpd | wc -l 或: pgrep httpd|wc -l 计算httpd占用内存的平均数: ps aux|grep -v grep|awk '/httpd/{sum+=$6;n++};END{print sum/n}' 理论上服务器内存(单位G)*1024*1024*1024/2

Windows Server 脚本记录Apache、Mysql 每分钟并发数

打开windows server 计划任务管理器.定时执行如下的Bat脚本即可. 在D盘新建一个monitor文件夹,创建ApacheMysql.bat文件.内容如下: 在monitor文件夹中新建mysql.apache文件夹 进入mysql文件夹,创建sql.sql文件,保存如下内容: select count(*) from information_schema.processlist into outfile 'd:/monitor/mysql/b'; 执行后,脚本会生成日志文件.记录当

性能测试:通过设置注册表提高 P2P/IIS 并发数

写在前面 在执行性能测试(如用 JMeter 直接压接口)的时候,有的时候并发数上不去.本机大面积出现 TCP 状态为 TIME_WAIT,除了放开 TCP 端口数和调整默认 TCP 释放时间外,另外几个注册表项同样重要且需要调整. 以下设置项针对的是本机和远端机. 设置完成后,重启下电脑使生效. 增加TCP 连接数:TcpNumConnections [HKLM\System\CurrentControlSet\Services\Tcpip\Parameters] TcpNumConnecti

nginx限制ip并发数

nginx限制ip并发数,也是说限制同一个ip同时连接服务器的数量 1.添加limit_zone 这个变量只能在http使用 vi /usr/local/nginx/conf/nginx.conf limit_zone one $remote_addr 10m; 2.添加limit_conn 这个变量可以在http, server, location使用 我只限制一个站点,所以添加到server里面 vi /usr/local/nginx/conf/host/gaojinbo.com.conf 

查看apache当前并发访问数和进程数

(转) 查看apache当前并发访问数和进程数 (2012-07-19 11:26:11) 转载▼ 标签: apache apache进程 查看进程 杂谈 分类: Linux :http://rainwang.iteye.com/blog/742749 1.查看apache当前并发访问数:  netstat -an | grep ESTABLISHED | wc -l 对比httpd.conf中MaxClients的数字差距多少. 2.查看有多少个进程数: ps aux|grep httpd|w