找回密码
 新猫注册
查看: 856|回复: 0

mod_cband中文手册

[复制链接]
kernel 发表于 2008-10-7 09:56:34 | 显示全部楼层 |阅读模式
http://www.baidu.com/s?wd=mod_cband

http://hi.baidu.com/e0easy/blog/ ... 67450134fa4129.html

mod_cband- 一个Apache HTTP Server Version 2下的针对每用户、每虚拟主机和每一目的的带宽控制模块


1. 各种指令中可以使用的单位:

* 传输速度限制单位:
o kbps, Mbps, Gbps- 每秒传输的比特数, 分别为: 1024,1024*1024 和 1024*1024*1024 bps
o kb/s , MB/s, Gb/s-每秒传输的字节数, 分别为: 1024,1024*1024 和 1024*1024*1024 b/s
o 默认单位是kbps

* 传输容量限额单位:
o K,M,G- 分别为: 1000,1000*1000 和 1000*1000*1000 字节
o Ki,Mi,Gi - 分别为: 1024,1024*1024 和 1024*1024*1024 字节
o 默认单位是K

* 时间限额单位:
o S , M , H , D, W- 秒,分钟,小时,天,周; 分别为: 1,60,3600,86400,604800 秒
o 默认单位是秒

2. 指令详解

指令名称:CBandDefaultExceededURL
描 述:指定当mod_cband侦测到发生虚拟主机或用用传输超限发生成,将把所有客户发起的请求重定向到的网址

注 意: 如果你没有指定要跳转的URL,则发送标准 503:Service Unavailable出
错信息
配置位置: Server config
语 法: CBandDefaultExceededURL URL


指令名称:CBandDefaultExceededCode
描 述:当超限发生时,发给用户的http错误码
配置位置:Server config
语 法:CBandDefaultExceededCode HTTP_CODE
例 子:CBandDefaultExceededCode 509


指令名称:CBandScoreFlushPeriod
描 述:为虚拟主机或用户设定一个请求数阀值,在达到阀值时将把请求数写到scoreboard文件中。 使用这个参数将有助于提高mod_cband的性能。
默 认 值:1
配置位置:Server config
语 法:CBandScoreFlushPeriod number_of_requests(请求数)
例 子:CBandScoreFlushPeriod 100
   任意虚拟主机或用户,在达到指定的请求数之后,将被记入scoreboard


指令名称:CBandSpeed
描 述:为虚拟主机设定最大传输速度
配置位置:<Virtualhost>
语 法:CBandSpeed kbps rps max_conn
kbps - 最大的传输速度:[kMG]bps 或都[kMG]B/s
rps - 每秒的最大请求数
max_conn- 最大并发连接数
例 子:CBandSpeed 1024 10 30
设定最大传速度为: 1024kbps (每秒 1024*1024 位元),
最大每秒 10个请求和 最多30个并发连接
注 意:从 0.9.6.0 版开始支持这个功能


指令名称:CBandRemoteSpeed
描 述:指定任意远程客户端的最大速度
配置位置:<Virtualhost>
语 法:CBandRemoteSpeed kbps rps max_conn
kpbs - 最大传输速度: [kMG] bps 或 [kMG] B/s
rps - 每秒的最大请求数
max_conn- 最大并发连接
例 子:BandRemoteSpeed 20kb/s 33
最大速度为 20kB/s(20*1024 bytes/秒),
每秒最多接受2个远端客户请求和 3个并发连接
注   意:从 0.9.6.1-rc2开始支持这个功能


指令名称:CBandClassRemoteSpeed
描 述:为特定地址段的远端客户指定最大的速度
配置位置:<Virtualhost>
语 法:CBandClassRemoteSpeed class_name kpbs rps
class_name- 已定义的地址类名
kbps - 最大传输速度:kbps或kB/s
rps- 每秒的最大请求数
max_conn- 最大并发连接数
例 子:<CBandClass googlebot_class>
      CBandClassDst 66.249.64/24
      CBandClassDst 66.249.65/24
      CBandClassDst 66.249.79/24
</CBandClass>
CBandClassRemoteSpeed googlebot_class 20kb/s 2 3

设定最大的传输速度为: 20kB/s( 20*1024bytes/s),
在指定了地址范围内(googlebot_class)的远端客户中,每秒只接受2个请求和 3并发连接
注   意:从 0.9.6.1-rc 2开始支持这一功能


指令名称:CBandRandomPulse
描 述:r.p.g.开关
   r.p.g.是mod_cband速度限制的一种方式。它指定了连接检测采样的方式。打开此功能,将持续滚动采样。如果带宽和CPU占用不稳定的时候,关掉此功能。
配置位置:Global
语 法:CBandRandomPulse ON/OFF


指令名称:CBandLimit
描 述:限制虚拟主机的流量
配置位置:<Virtualhost>
语 法:CBandLimit limit
   流量限制单位,可以用K、M、G、Ki、Mi、Gi
例 子:CBandLimit 10M
      限制流量为10M

      CBandLimit 10Mi
      限制流量为10Mi:10*1024*1024bytes


指令名称:CBandClassLimit
描 述:定义虚拟主机目标类别的流量
配置位置: <Virtualhost>
语 法:CBandClassLimit class_name limit
      class_name- 已定义的类别名称
      limit - 流量限制单位,可以用K、M、G、Ki、Mi、Gi


指令名称:CBandExceededURL
描 述: 指定当虚拟主机超出带宽或流量时,跳转的URL。提示:如果没有配置此项,将发送标准的503。
配置位置: <Virtualhost>
语 法:CBandExceededURL 网址


指令名称:CBandExceededSpeed
描 述: 定义当虚拟主机流量或带宽超出限制时,mod_cband将调节的最大速度
配置位置: <Virtualhost>
语 法:CBandExceededSpeed kbps rps max_conn
      kbps - 最大传送速度,kbps或kB/s
      rps- 每秒最大请求数
      max_conn- 最大并发连接数
注 意: 从 0.9.6.0 开始支持


指令名称:CBandScoreboard
描 述:指定虚拟主机的scoreboard文件
配置位置:<Virtualhost>
语 法:CBandScoreboard path
注 意: 路径对于Apache用户必须可写


指令名称:CBandPeriod
描 述:定义虚拟主机使用情况重置的周期
配置位置:<Virtualhost>
语 法:CBandPeriod period
      可用单位:S(秒)、M(分)、H(小时)、D(天)、W(周)
例 子:CBandPeriod 1W //每周重置
      CBandPeriod 14D //每14天重置
      CBandPeriod 60M //每小时重置


指令名称:CBandPeriodSlice
描 述:定义CBandPeriod周期内,分部分计算的时间长度
默 认 值:slice_len=limit
配置位置:<Virtualhost>
语 法:CBandPeriodSlice slice_length
例 子:CBandLimit 100G
      CBandPeriod 4W
      CBandPeriodSlice 1W
      一个周期将被分成4个小部分(4周/1周=4)。每部分限制流量100G/4=25G。一周之后slice限制将是50G,两周后将是75G...


指令名称:<CBandUser>
描 述:定义一个新的 cband 用户
配置位置:Server config
语 法:<CBandUser user_name>


指令名称:CBandUserSpeed
描 述:定义cband用户的最大带宽
配置位置:<CBandUser>
语 法:CBandUserSpeed 每秒千个位元组 rps max_conn
      kbps - 最大速度:kbps或者kb/s
      rps- 每秒请求数
      max_conn- 最大连接数
例 子:CBandUserSpeed 100kb/s 105
   定义用户的最大熟读为100kB/s,每秒最多10个请求,最大连接数为5
注 意:从 0.9.6.0 开始支持


指令名称:CBandUserLimit
描 述:指定cband user的流量
配置位置:<CBandUser>
语 法:CBandUserLimit limit
      limit - 流量可用单位K、M、G、Ki、Mi、Gi
例 子:CBandUserLimit 10M
      指定用户流量为10M

      CBandUserLimit 10Mi
      指定用户流量为10Mi


指令名称:CBandUserClassLimit
描 述: 指定cband user类的流量
配置位置:<CBandUser>
语 法:CBandUserClassLimit class_name limit
      class_name- 类名称
      limit - 流量大小单位,可用K、M、G、Ki、Mi、Gi

指令名称:CBandUserExceededURL
描 述: 指定当cband user超出限制时,跳转的URL
注 意: 如果没有定义此项,将发送标准的503
配置位置:<CBandUser>
语 法:CBandUserExceededURL URL


指令名称:CBandUserExceededSpeed
描 述: 定义当cband user超出限制时,mod_cband将调节的速度
注 意:只有当CBandUserExceededURL没有设定时,此项才生效
配置位置:<CBandUser>
语 法:CBandUserExceededSpeed kbps rps max_conn
      kbps - 最大速度:kpbs或kb/s
      rps- 每秒请求数
      max_conn- 最大并发数
注 意:从 0.9.6.0 开始支持

指令名称:CBandUserScoreboard
描 述: 定义用户的scoreboard文件
配置位置:<CBandUser>
语 法:CBandUserScoreboard path
注 意:目录必须允许apache用户写入


指令名称:CBandUserPeriod
描 述: 定义cband user计算周期
配置位置:<CBandUser>
语 法:CBandUserPeriod period
      period - 可用单位S(秒)、M(分)、H(小时)、D(天)、W(周)
例 子: CBandUserPeriod 1W
      CBandUserPeriod 14D
      CBandUserPeriod 60M


指令名称:CBandUserPeriodSlice
描 述:定义CBandUserPeriod的分割
默 认 值:slice_len=limit
配置位置:<CBandUser>
语 法:CBandUserPeriodSlice slice_length
例 子:CBandUserLimit 100G
      CBandUserPeriod 4W
      CBandUserPeriodSlice 1W
      CBandUserPeriod将被分割成4个部分(4W/1W=4)。每部分限制流量100G/4=25G。一周之后部分限制将为50G,两周后为75G...


3. 状态管理配置实例
如果要观察实时的流量、使用情况、用户、scoreboard,添加以下内容到配置文件:

<Location /cband-status>
SetHandler cband-status
</Location>

<Location /cband-status-me>
SetHandler cband-status-me
</Location>

这样,你就可以通过以下地址来访问
http://server_name/cband-status
http://server_name/cband-status-me


在0.9.5-rc1之后的版本中,可以通过XML格式来观察

http://server_name/cband-status?xml
http://server_name/cband-status-me?xml

4. 流量带宽配置实例

<VirtualHost *:80>
DocumentRoot /var/www/chinafu.com/
ServerName chinafu.com
CustomLog /var/log/apache2/chinafu.com.access combined
ErrorLog /var/log/apache2/chinafu.com.access.error
RewriteEngine On
RewriteOptions inherit

# 本虚拟机最大带宽为:1024kbps
# 本虚拟机每秒最多能接受10个请求
# 本虚拟机最多30个并发连接
CBandSpeed 1024 10 30

# 每个远程客户端最大带宽10kB/s,每秒最多3个请求,最大连接为2个
CBandRemoteSpeed 10kb/s 3 2

# 对于googlebot_class类的远程用户,最大带宽为20kB/s,每秒最多2个请求,最大连接为3个
CBandClassRemoteSpeed googlebot_class 20kb/s 2 3
</VirtualHost>


5. 流量限制配置实例
   按虚拟主机进行流量配置
   下面,你可以订制虚拟主机的流量限制、URL和scoreboard文件
  
# 定义超出流量之后跳转的URLCBandDefaultExceededURL
CBandDefaultExceededURL http://chinafu.com/bandwidth_exceeded.html

<VirtualHost *:80>
DocumentRoot /var/www/chinafu.com/
ServerName chinafu.com
CustomLog /var/log/apache2/chinafu.com.access combined
ErrorLog /var/log/apache2/chinafu.com.access.error
RewriteEngine On
RewriteOptions inherit

# 流量限制为100M
CBandLimit 100000

# 当超过流量时,跳转URL到http://chinafu.com/bandwidth_exceeded.html
CBandExceededURL http://chinafu.com/bandwidth_exceeded.html

# 虚拟主机的scoreboard文件
CBandScoreboard /var/run/apache2/chinafu.com.scoreboard

# scoreboard清空周期(30分钟),仅在0.9.5-rc2之后版本支持
CBandPeriod 30M
</VirtualHost>


按用户指定流量(仅限0.9.1之后版本)
在0.9.1版之后,你可以指定用户限制然后将虚拟主机分配给用户

# 定义用户‘dembol’
<CBandUser dembol>
# 限制用户'dembol'的流量为200MB
CBandUserLimit 200000

# 如果用户超出限制,跳转到URLhttp://chinafu.com/bandwidth_exceeded.html
CBandUserExceededURL http://chinafu.com/bandwidth_exceeded.html

# 用户的scoreboard文件
CBandUserScoreboard /var/run/apache2/dembol.scoreboard

# 清空scoreboard的周期
# (only in >=0.9.5-rc2)
CBandUserPeriod 5W
</CBandUser>

# 将虚拟主机‘chinafu.com’分配给‘dembol’用户
<VirtualHost *:80>
ServerName chinafu.com
# 指定虚拟主机的所有者
CBandUser dembol
</VirtualHost>

# 将虚拟主机‘aga.org’分配给‘dembol’用户
<VirtualHost *:80>
ServerName aga.org
# 指定虚拟主机的所有者
CBandUser dembol
</VirtualHost>


按用户和虚拟主机混合方式指定流量和带宽(仅限于0.9.1之后版本)
在0.9.1版之后,你可以混合用户和虚拟主机方式来指定流量和带宽

# 定义用户 “dembol”
<CBandUser dembol>
# “dembol”用户流量限制为200MB
CBandUserLimit 200000

#如果超出限制,跳转到URLhttp://abc.org/bandwidth_exceeded.html
CBandUserExceededURL http://abc.org/bandwidth_exceeded.html

# 用户的scoreboard文件
CBandUserScoreboard /var/run/apache2/dembol.scoreboard

# 清空scoreboard的周期(4天)
# (only in >=0.9.5-rc2)
CBandUserPeriod 4D
</CBandUser>

# 将虚拟主机“xyz.org”分配给用户“dembol”
<VirtualHost *:80>
ServerName xyz.org
# 指定虚拟主机的所有者
CBandUser dembol

# 限制此虚拟主机流量为100MB
CBandLimit 100000

# 如果超出限制,跳转到URLhttp://abc.org/bandwidth_exceeded.html
CBandExceededURL http://abc.org/bandwidth_exceeded.html

# 虚拟主机的scoreboard文件
CBandScoreboard /var/run/apache2/xyz.org.scoreboard

# a period of time after which the scoreboard will be cleared (50 minutes)
#清空scoreboard的周期(50分钟)
CBandPeriod 50M
</VirtualHost>

# 将虚拟主机“aga.org”分配给用户“dembol”
<VirtualHost *:80>
ServerName aga.org
#指定虚拟主机的所有者
CBandUser dembol
</VirtualHost>


按远程目标指定流量和带宽(仅限0.9.5-rc1之后版本)
在0.9.5-rc1之后,你可以通过来定义远程目标类来指定类的流量和带宽。同时也可以定义CBandClassLimit和CBandUserClassLimit来定义不同的类
# define "class_1"
<CBandClas class_1>
CBandClassDst 217.172.231.67
CBandClassDst 127/8
CBandClassDst 192.168.0.0/24
CBandClassDst 10.0.0.20
</CBandClass>

# 定义 'class_2'
<CBandClas class_2>
CBandClassDst 192.168.100.100
CBandClassDst 153.19/16
</CBandClass>

<CBandUser dembol>
CBandUserLimit 1000000
CBandUserExceededURL http:// edns.pl/bandwidth_exceeded.html
CBandUserScoreboard/home/ dembol/write/user.dembol.scoreboard

# "class_2"限制流量500MB
CBandUserClassLimit class_2 500000
</CBandUser>

<VirtualHost*:80>
...
CBandUser dembol

# "class_1"限制流量1GB
CBandClassLimit class_1 1000000

# 定义scoreboard的清空时间为120秒(仅限0.9.5-rc2以上版本
CBandPeriod 120S
</VirtualHost>




完整配置实例:

# 可以通过http://yourdomain/cband-status查看流量
SetHandler cband-status

# 超出限制,跳转到google
CBandDefaultExceededURL http://www.google.com
# 定义类别
CBandClassDst 217.172.231.67
CBandClassDst 127/8
CBandClassDst 192.168.0.0/24
CBandClassDst 10.0.0.20
CBandClassDst 192.168.100.100
CBandClassDst 153.19/16
CBandClassDst 10.13/16

# 定义用户
CBandUserLimit 100000
CBandUserExceededURL http://server_name.com/bandwidth_exceeded.html
CBandUserScoreboard /home/dembol/write/user.dembol.scoreboard
CBandUserPeriod 10W

CBandUserLimit 1000000
CBandUserExceededURL http://server_name.com/bandwidth_exceeded.html
CBandUserScoreboard /home/dembol/write/user.dembolek.scoreboard
CBandUserClassLimit class_1 50000
CBandUserPeriod 20H
CBandUserLimit 10000000
CBandUserExceededURL http://www.google.com
CBandUserScoreboard /home/dembol/write/user.dembol.nasa.pl.scoreboard
CBandUserClassLimit class_2 3000
CBandUserClassLimit class_3 10000
CBandUserPeriod 2H

NameVirtualHost *:80
DocumentRoot /home/dembol/public_html/dembol.nasa.pl/
ServerName dembol.nasa.pl
ServerAlias *.dembol.nasa.pl
Setenv VLOG /home/dembol/public_html/logs/dembol.nasa.pl.access
CustomLog /home/dembol/public_html/logs/dembol.nasa.pl.access combined
ErrorLog /home/dembol/public_html/logs/dembol.nasa.pl.error

# 设定虚拟主机的cband
CBandLimit 100000000
CBandUser dembol.nasa.pl
CBandExceededURL http://edns.pl/bandwidth_exceeded.html
CBandScoreboard /home/dembol/write/dembol.nasa.pl.scoreboard
CBandClassLimit class_1 10000000
CBandPeriod 200S
DocumentRoot /home/dembol/public_html/dembol.nasa.pl/
ServerName dembol.eu.orgServerAlias *.dembol.eu.org
Setenv VLOG /home/dembol/public_html/logs/dembol.eu.org.access
CustomLog /home/dembol/public_html/logs/dembol.eu.org.access combined
ErrorLog /home/dembol/public_html/logs/dembol.eu.org.error
# 设定虚拟主机的cband

CBandUser dembolek
CBandLimit 10000
CBandExceededURL http://server_name.com/bandwidth_exceeded.html
CBandScoreboard /home/dembolek/write/dembol.eu.org.scoreboard
CBandClassLimit class_1 700000
CBandClassLimit class_2 100000
CBandClassLimit class_3 500000
CBandPeriod 5D

DocumentRoot /home/dembol/public_html/dembol.nasa.pl/cvs_alias
ServerName cvs.cband.linux.pl:80
Setenv VLOG /home/dembol/public_html/logs/cvs.cband.linux.pl.access
CustomLog /home/dembol/public_html/logs/cvs.cband.linux.pl.access combined
ErrorLog /home/dembol/public_html/logs/cvs.cband.linux.pl.error
# 设定虚拟主机的cband

CBandUser dembol
CBandLimit 100000
CBandExceededURL http://server_name.com/bandwidth_exceeded.html
CBandScoreboard /home/dembol/write/dembol.eu.org.scoreboard
CBandClassLimit class_3 20000
CBandPeriod 1W

Performance Tests
性能测试
mod_cband without CBandScoreFlushPeriod directive
mod_cband 不清空score MPM prefork MPM worker MPM perchild MPM event MPM leader
with mod_cband 316.63 rps 346.89 rps ~ 297.36 rps ~
without mod_cband 447.76 rps 406.91 rps ~ 425.13 rps ~

mod_cband with CBandScoreFlushPeriod 100 directive
mod_cband 设定清空score周期为100 MPM prefork MPM worker MPM perchild MPM event MPM leader
with mod_cband 405.17 rps 365.22 rps ~ 414.60 rps ~
without mod_cband 447.76 rps 406.91 rps ~ 425.13 rps ~

Http server: Apache 2.2, default http.conf, compiled with:
Apache2.2版,默认的http.conf配置,按以下方式编译./configure --with-mpm=$1 \
   --enable-layout=Slackware \
   --enable-v4-mapped \
   --enable-cache \
   --enable-disk-cache --enable-mem-cache \
   --enable-deflate \
   --enable-ssl \
   --enable-mods-shared=all \
   --with-uid=apache --with-gid=apache \
   --with-gdbm --with-berkeley-db

Linux kernel: 2.6.14.2-grsec
Linux 内核版本:2.6.14.2-grsec
Machine: 2xPentium II 333MHz, 320MB RAM
机器配置:双PII 333MHz,320MB内存
Network: 100Mbps ethernet
网络:100Mbps以太网

Test command:
测试使用命令httperf --server 192.168.0.25 --port 8 --num-conns 1000 --uri http://www.traktor.pl --hog
您需要登录后才可以回帖 登录 | 新猫注册

本版积分规则

手机版|小黑屋|[漫猫]动漫论坛

GMT+8, 2024-4-27 20:32

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表