`
lirig
  • 浏览: 236773 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Linux 下 Apache 并发连接数和带宽控制

    博客分类:
  • Jave
阅读更多

Linux 下 Apache 并发连接数和带宽控制

摘要
Linux+Apache的稳定性、安全性和性能以及低廉的价格正在赢得越来越多的市场份额,使用Linux+Apache作网站服务器的朋友也越来越多,而Apache作为一种http服务,相比FTP总是不容易控制,特别是当网站以http方式提供软件/音乐下载时,若是每个用户都开启多个线程并没有带宽的限制,将很快达到http的最大连接数或者造成网络壅塞,使得网站的许多正常服务都无法运行。不过,Apache的使用者们早已开发出了mod_limitipconn和mod_bandwidth两个模块,来控制http的并发连接数和用户所能够使用的带宽,下面将以RedHat Linux 7.3+Apache 1.3.7来说明它们的使用方法。
--------------------------------------------------------------
Linux+Apache的稳定性、安全性和性能以及低廉的价格正在赢得越来越多的市场份额,使用Linux+Apache作网站服务器的朋友也越来越多,而Apache作为一种http服务,相比FTP总是不容易控制,特别是当网站以http方式提供软件/音乐下载时,若是每个用户都开启多个线程并没有带宽的限制,将很快达到http的最大连接数或者造成网络壅塞,使得网站的许多正常服务都无法运行。不过,Apache的使用者们早已开发出了mod_limitipconn和mod_bandwidth两个模块,来控制http的并发连接数和用户所能够使用的带宽,下面将以RedHat Linux 7.3+Apache 1.3.7来说明它们的使用方法。

一、使用mod_limitipconn限制Apache的并发连接数

mod_limitipconn可以控制每个IP地址同时连接服务器某一个目录的并发连接数,是一个非常有用的模块,其官方网页是http://dominia.org/djao/limitipconn.html,最新版本为for Apache 1.3.7的0.04,并且还有支持Apache 2.x的模块下载,由于本人使用Apache 1.3.7版本,所以请使用2.x版本Apache的朋友到其官方网站察看具体的使用方法。

mod_limitipconn for Apache 1.3x提供三种安装方式,分别是tar包、rpm安装文件和rpm源文件,由于rpm包只能用在 RedHat 7.x 版本,并且不支持检测代理服务器,所以我们一般都使用tar包的安装方式。

以管理员方式登陆服务器,然后在服务器上运行wget http://dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz将mod_limitipconn的tar包下载到服务器,然后按照再运行tar zxvf mod_limitipconn-0.04.tar.gz将tar包解压缩,会在当前目录下生成mod_limitipconn-0.04目录,然后cd mod_limitipconn-0.04进入此目录,下一步就是使用apxs将目录中的mod_limitipconn.c编译。这时,我们需要确定自己的Apache安装在那个目录,并且找到apxs命令放在哪里。

通过命令whereis apxs,我们可以确定apxs命令的路径,如我的apxs命令所在为/usr/sbin/apxs,则输入/usr/sbin/apxs -c -i -a mod_limitipconn.c对mod_limitipconn.c进行编译,此命令会自动在你Apache的配置文件httpd.conf中加入需要的信息,并且将生成的mod_limitipconn.so模块拷贝到Apache的模块目录。不过为了确认此命令是否正常运作,请首先检查自己的Apache模块目录(我的是/usr/lib/apache),看内部是否含有mod_limitipconn.so文件,没有的话请将mod_limitipconn-0.04目录中生成的文件拷贝到此处。

刚才命令自动生成的httpd.conf可能有些错误,在我的系统中,它将LoadModule limitipconn_module modules/mod_limitipconn.so放在了

  <IFDEFINE HAVE_PYTHON>
  LoadModule python_module modules/mod_python.so
  </IFDEFINE>

之间,而将AddModule mod_limitipconn.c放在了

  <IFDEFINE HAVE_PYTHON>
  AddModule mod_python.c
  </IFDEFINE>

之间,直接造成了mod_limitipconn模块不能正常运行,所以请将这两行分别移动到没有<IFDEFINE></IFDEFINE>的相应行中,然后请确认mod_status模块已经加载,并且在mod_status下添加了ExtendedStatus On这一行。这时我们的mod_limitipconn模块就安装完毕,下一步就是对某个目录进行并发连接数的设置了。

mod_limitipconn可以对全局和虚拟主机进行不同的限制,其语法结构都是

  <IFMODULE mod_limitipconn.c>
    <LOCATION /> #所限制的目录所在,此处表示主机的根目录
      MaxConnPerIP 3 #所限制的每个IP并发连接数为3个
      NoIPLimit image/* #对图片不做IP限制
    </LOCATION>
    <LOCATION mp3> #所限制的目录所在,此处表示主机的/mp3目录
      MaxConnPerIP 1 #所限制的每个IP并发连接数为1个
      OnlyIPLimit audio/mpeg video #该限制只对视频和音频格式的文件
    </LOCATION>
  </IFMODULE>

当对全局进行限制时,将这段代码放在httpd.conf文件没有VirtualHost的地方,若是对某个虚拟主机进行限制,请将其放在<VIRTUALHOST xxx.xxx.xxx.xxx>和</VIRTUALHOST>之间,我们可以通过更改Location以及MaxConnPerIP方便的控制所限制的目录和并发连接数。

最后,只要重新启动Apache服务,并发连接数的限制就可以生效。

二、使用mod_bandwidth控制Apache的带宽

Apache 1.3.7实际上带有mod_bandwidth支持,只是没有此模块的so文件,我们所做的就是下载mod_bandwidth的源文件进行编译,并对mod_bandwidth进行相应的设置。

在下载之前,请先确认自己的Apache配置文件httpd.conf中是否含有

  <IFDEFINE HAVE_BANDWIDTH>
  LoadModule bandwidth_module modules/mod_bandwidth.so
  </IFDEFINE>

以及

  <IFDEFINE HAVE_BANDWIDTH>
  AddModule mod_bandwidth.c
  </IFDEFINE>

若是没有,请加上

  LoadModule bandwidth_module modules/mod_bandwidth.so
  AddModule mod_bandwidth.c

并且这两行必须分别加在相应区域的最前面,使得这个模块以最低的优先级运行。(不过1.3.7的Apache应该有,呵呵)。

确认后,请输入wget ftp://ftp.cohprog.com/pub/apache/module/1.3.0/mod_bandwidth.c将源文件下载到服务器,然后请使用apxs对其进行编译,编译方法和mod_limitipconn的基本相同,如我输入/usr/sbin/apxs -c mod_bandwidth.c -o /usr/lib/apache(Apache的模块目录),编译程序会自动将编译成功的mod_bandwidth.so文件放到Apache的模块目录,您也可以自己确认一下,若是不正常,拷贝过去即可。

mod_bandwidth运行时需要一些特定的目录,按照默认情况,请运行以下命令创建并更改目录的权限:

  mkdir /tmp/apachebw
  mkdir /tmp/apachebw/link
  mkdir /tmp/apachebw/master
  chmod -R 777 /tmp/apachebw

然后再打开httpd.conf文件,加上以下内容

  <IFMODULE mod_bandwidth.c>
    BandWidthDataDir “/tmp/apachebw/“
    BandWidthModule on
  </IFMODULE>

这时,我们就能够对所需要限制带宽的目录进行相应的设置,此处的目录请使用服务器的绝对路径。如我们想限制服务器/home/www/softicp/download/soft目录的下载速度,也就是限制网址http://download.softicp.com/soft目录下软件的下载速度,则为httpd.conf文件增加以下内容

  <DIRECTORY soft download softicp www home>
   BandWidth cbifamily.com 0 #来自cbifamily.com的下载不受速度限制
   BandWidth 210.51.21 0 #来自210.51.21网段的下载不受速度限制
   BandWidth all 327680 #来自其它网段的速度都限制为327680Byte,即30KB/s
  </DIRECTORY>

设置完毕后,重新启动Apache服务,即可生效。

mod_bandwidth还有许多其它有用的参数,如在<DIRECTORY></DIRECTORY>中间加上MaxConnection 120则可以限制某个目录的最多连接数,当超过指定连接数时,拒绝新的连接,此参数与mod_limitipconn模块结合可以控制某个目录的最多连接人数。

其它的参数请朋友们到其官方网站http://www.cohprog.com/v3/bandwidth/doc-en.html察看相关的文档。

Apache的功能确实强大,很多功能都可以通过添加模块来实现,在http://modules.apache.org/可以找到更多的模块,我们也可以编写自己的模块来实现相应的功能。

分享到:
评论

相关推荐

    Linux下Apache并发连接数和带宽控制

    在Linux环境下,Apache的并发连接数和带宽可以通过两个模块来实现:mod_limitipconn和mod_bandwidth。这两个模块是由Apache社区的开发者创建的,用于增强服务器的管理能力。 1. **mod_limitipconn**: 这个模块...

    Linux下Apache并发连接数和带宽控制.pdf

    这两个模块分别用于控制并发连接数和带宽使用,以确保服务器的稳定运行。 1. **mod_limitipconn**: mod_limitipconn模块允许管理员限制每个IP地址同时连接到服务器特定目录的并发连接数量。这对于防止恶意用户或...

    设置Apache最大连接数

    特别是在高并发场景下,合理设置Apache的最大连接数(即`MaxClients`参数),能够显著提升服务器响应速度与承载能力。 #### 知识点二:`MaxClients`参数详解 - **定义**:`MaxClients`参数用于定义Apache服务器能...

    Apache并发数、带宽限制

    ### Apache并发数与带宽限制知识点详解 ...综上所述,通过使用`mod_vhost_limit`和`mod_limitipconn`两个模块,我们可以有效地控制Apache服务器上的并发连接数和带宽使用,从而提高系统的稳定性和安全性。

    nginx与apache限制ip连接数和带宽方法.docx

    nginx 与 Apache 限制 IP 连接数和带宽方法 本文档旨在介绍如何使用 Nginx 和 Apache 限制 IP 连接数和带宽的方法。这些方法可以帮助管理员控制服务器的资源使用,避免因为大量恶意请求而导致服务器崩溃。 一、...

    APACHE 流量控制及连接数限制.

    - 使用`limitipconn_module`模块限制每个IP地址的最大并发连接数: ```conf MaxConnPerIP 3 # 每个IP地址的最大并发连接数为3 ``` #### 注意事项 - 确保在执行任何更改之前备份您的`httpd.conf`文件。...

    请问有什么软件能测试网站的最大并发连接数吗.zip我告诉你4款压测软件

    在测试网站的最大并发连接数时,你需要关注以下几点: - **并发用户数**: 模拟多少个用户同时访问网站。 - **响应时间**: 在高并发下,服务器处理请求的速度。 - **吞吐量**: 单位时间内服务器能处理的请求数量。 - ...

    Linux下apache如何限制并发连接和下载速度

    这两个模块是非官方的Apache模块,提供了对同一IP地址的并发连接数和下载速度的限制。 首先,我们需要下载并安装这两个模块。可以通过wget命令从指定的URL获取源代码包,例如: ``` wget ...

    linux下限值并发速度

    `mod_limitipconn` 是一个开源的 Apache 模块,它允许管理员限制来自单一 IP 地址的并发连接数。这有助于防止某个 IP 地址发起过多的请求而造成服务器负载过重。 **1. 安装 `mod_limitipconn`** - 首先下载 `mod_...

    增加连接数限制个数

    `ulimit -n`命令可以查看和修改这个限制,增加这个值可以允许更多的并发连接。 2. **Socket缓冲区大小**:每个TCP连接都有发送和接收缓冲区,增大这些缓冲区可以容纳更多数据,从而支持更多连接。 3. **进程/线程...

    apache优化和模块安装

    mod_limitipconn 用于限制每个IP地址的并发连接数,防止DDoS攻击;mod_evasive 是一种DoS防护模块,可以检测并阻止恶意请求。这些模块的添加增强了服务器的安全性和抗攻击能力。 然后,配置 Apache 使用 worker MPM...

    apache流量控制

    - `CBandRemoteSpeed`用于限制单个用户的连接速度、最大并发请求数和最大连接数。 - `CBandPeriod`用于设置多久之后对带宽限制进行重置。 - `SetHandler`用于开启mod_cband的检测功能,方便管理员监控带宽使用情况。...

    ApacheBench测试详解

    - `-c concurrency`:指定并发连接数,表示同时向服务器发送请求的数量。 2. **请求次数** - `-n requests`:指定总共要发送的请求数。 3. **请求类型** - `-p POST_file`:用于POST请求,指定包含POST数据的...

    LAMP(Linux+Apache+Mysql+PHP)优化技巧.pdf

    可以通过限制同时连接数、启用KeepAlive、调整MIME类型缓存等方式提升性能。Apache的模块化设计允许根据需求选择加载必要的模块,减少不必要的内存占用。此外,使用`apachectl status`命令监控Apache状态,及时发现...

    APACHE流量控制实施文档

    ### Apache流量控制实施知识点 #### 一、背景与目的 在现代互联网环境中,为了保障网站的...通过以上步骤,可以有效地在Apache服务器上实现流量控制,提高网站的稳定性和响应能力,特别是在高并发环境下更为关键。

    利用autobench测试web服务器极限并发数.pdf

    利用Autobench和Httperf的组合,目的是测试Web服务器能够承载的最大并发连接数以及最佳并发数。这在评估服务器性能、优化配置或准备应对高流量场景时非常重要。 3. **系统和软件环境**: 测试在CentOS 5.3 64位...

    apache压力测试之ab

    - 使用命令行:运行`ab`时,你需要提供URL作为参数,例如`ab -n 100 -c 10 http://example.com/`,其中`-n`指定请求数,`-c`指定并发连接数。 2. **参数说明** - `-n`: 指定要发送的请求数,默认为1。 - `-c`: ...

    linux tcp服务器压力测试

    在压力测试中,我们需要关注的主要指标有:并发连接数、吞吐量、响应时间和服务器资源利用率等。 进行TCP服务器压力测试,我们通常会使用一些专门的工具,如`nc`(netcat)、`ab`(Apache Bench)、`jmeter`、`wrk`...

Global site tag (gtag.js) - Google Analytics