使用mod_throttle模块限制web服务连接数和带宽

Posted sfqas

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用mod_throttle模块限制web服务连接数和带宽相关的知识,希望对你有一定的参考价值。

问题
使用mod_throttle模块限制web服务连接数和带宽

解决方案
Prim@Hosting系统使用mod_throttle模块限制apache的连接数和带宽。

■■■■启用连接数和带宽限制的方法■■■■

在安装Prima系统的时候,安装脚本会提示是否启用连接数限制和带宽限制。安装后如果需要修改,则编辑如下配置文件:

/usr/prima/etc/httpd/modules.conf

上述文件中如果有如下一行:

MOD_THROTTLE=1

则表示使用mod_throttle模块限制连接数和带宽。如果这一行前边有#将其注释掉,则是没有启用限制功能。

修改并保存这个文件后,要重新启动服务 /etc/init.d/httpd restart 配置方可生效。

■■■■功能说明及注意事项■■■■

1) 连接数和带宽的统计方法,是通过计算一段时间内访问量并除以这段时间的长度得到的。例如设置某站点连接数50,则系统这个站点允许1分钟内有3000次连接。也就是说,连接数和带宽的限制都是某一时间段内的平均值,不是实时计算的结果,所以可能存在一定的偏差。

2) 连接数限制和带宽限制同一个站点只能有一个限制生效。

如果要限制连接数,请将带宽限制的文本框位置填写为-1 ,即不限制。
如果要限制带宽,请将连接数的文本框位置填写为-1 ,即不限制。

如果同时填写连接数限制和带宽限制,则只有连接数限制生效,带宽限制不生效。

3) 当对一个站点打开带宽限制功能后,由于浏览器缓存等众多原因,启用此功能前下载的文件可能会不受带宽限制的影响。

4) 当超带宽和流量后,系统有两种处理方式:延迟访问或者显示“服务不可用”。

延迟访问的方式是在超过带宽和流量限制后,系统让访问变得很慢,延迟一会才返回访问结果。

显示“服务不可用”则是当超过带宽和流量限制后,系统直接输出“Service Temporarily Unavailable”,并中止访问。

Prim@Hosting For Linux 默认是“延迟访问”的方式。

5) 切换延迟访问与显示“服务不可用”两种方式。

编辑apache配置文件 /usr/prima/apache_ssl/conf/httpd.conf ,找到标记有<IfModule mod_throttle.c>的如下一个配置段:

<IfModule mod_throttle.c>
...
...
ThrottleMaxDelay 0
...
</IfModule>

其中ThrottleMaxDelay 0 一行表示超过带宽和流量限制后,采用延迟访问的方法。如果把这一行删除或者用#注释掉,则是采用显示“服务不可用”的方法。

修改并保存这个文件后,要重新启动服务 /etc/init.d/httpd restart 配置方可生效。

6) 自定义“服务不可用”页面。

当超过带宽和流量限制后,系统会输出“Service Temporarily Unavailable”,即所谓的显示“服务不可用”。

这个报错页面允许自行定义。修改 /www/icons/busy.html 即可实现。

然后编辑apache配置文件 /usr/prima/apache_ssl/conf/httpd.conf ,找到标记有<IfModule mod_throttle.c>的如下一个配置段:

<IfModule mod_throttle.c>
...
...
ErrorDocument 503 /icons/busy.html
...
</IfModule>

在其中添加 ErrorDocument 503 /icons/busy.html 一行,则表示用自定义的/www/icons/busy.html页面,替代“Service Temporarily Unavailable”的显示。

修改并保存这个文件后,要重新启动服务 /etc/init.d/httpd restart 配置方可生效。

7) 查看各站点连接数和带宽限制的方法

编辑apache配置文件 /usr/prima/apache_ssl/conf/httpd.conf ,在标记有<IfModule mod_throttle.c>的一个配置段中,找到如下三行:

#<Location /throttle-status>
# SetHandler throttle-status
#</Location>

将这三行前边的注释#去掉,如下:

<IfModule mod_throttle.c>
...
...
<Location /throttle-status>
SetHandler throttle-status
</Location>
...
</IfModule>

修改并保存这个文件后,要重新启动服务 /etc/init.d/httpd restart 配置方可生效。

然后即可通过浏览器访问如下地址:

http://服务器IP/throttle-status

实时监控带宽和流量限制。

以上是关于使用mod_throttle模块限制web服务连接数和带宽的主要内容,如果未能解决你的问题,请参考以下文章

是啥限制了我的 ASP.NET 应用程序可以与 Web 服务建立的同时连接数?

设置Paramiko模块的sftp.get()的时间限制

如何解决 Web 套接字客户端连接数限制

WCF Restful Web 服务客户端限制

6.网络是怎么连接的 --- 请求到达Web服务器,响应返回浏览器

Nginx Web 服务应用进阶