Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:apache_http_server_centos_5_-_mod_cband_-_bandbreitenbeschraenkung

Apache HTTP Server CentOS 5 - mod_cband - Bandbreitenbeschränkung

Das mod_cband ist ein Apache HTTP Server 2 Modul, welches das Problem der Bandbreitenbeschränkung, das Limitieren von gleichzeitig agierenden Benutzers und ebenfalls das Beschränken der Bandbreite einzelner „virtueller Hosts“ zu lösen vermag. Die aktuelle Version kann Bandbreitenbeschränkungen für „virtuelle Hosts“ und gleichzeitig agierende Benutzer realisieren, die maximale Download-Geschwindigkeit limitieren (wie z.B. mod_bandwidth), die Anzahl der Anfragen pro Sekunde einschränken und die maximale Anzahl gleichzeitiger IP-Verbindungen (wie bei 'mod_limitipconn') regeln.

Herunterladen

Das Apache HTTP Server 2 Modul - mod_cband kann unter folgendem Link heruntergeladen werden:

Die aktuelle Version bei der Erstellung dieses Artikels ist mod-cband-0.9.7.5.tgz.

Installieren

Nach dem herunterladen einer Version von mod_cband in z.B. das Verzeichnis /tmp auf den lokalen Rechner, sollte sich folgende Datei

mod-cband-0.9.7.5.tgz
im Verzeichnis /tmp befinden.

Das heruntergeladene Archiv mit dem Namen mod-cband-0.9.7.5.tgz kann mit folgendem Befehl entpackt werden:

$ tar xvfz mod-cband-0.9.7.5.tgz

Anschließend sollte sich ein Verzeichnis mit dem Namen mod-cband-0.9.7.5.tgz im Verzeichnis /tmp befinden:

# ll /tmp/
...
drwxr-xr-x 5 root root  4096 Nov 14  2006 mod-cband-0.9.7.5
-rw-r--r-- 1 root root 70713 Jun  1 22:38 mod-cband-0.9.7.5.tgz
...

Abschliessend kann das heruntergeladene Archiv mod-cband-0.9.7.5.tgz mit folgendem Befehl gelöscht werden:

$ rm /tmp/mod-cband-0.9.7.5.tgz

Ab hier werden root-Rechte zur Ausführung der nachfolgenden Befehle benötigt. Um root zu werden geben Sie bitte folgenden Befehl ein:

$ su -
Password: 

Mit nachfolgendem Befehl ist nun eine Wechsel ins Verzeichnis /tmp/mod_cband-0.9.7.5 erforderlich:

# cd /tmp/mod-cband-0.9.7.5

httpd-devel installieren

:!: WICHTIG - Bevor mit dem nächsten Schritt, der Kompilation von mod_cband begonnen werden kann, ist es erforderlich, dass das RPM-Paket

  • httpd-devel

installiert ist. Dies kann mit nachfolgendem Befehl überprüft werden:

Paket installiert

Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
 * rpmforge: ftp-stud.fht-esslingen.de
 * base: centos.intergenia.de
 * updates: centos.intergenia.de
 * addons: centos.intergenia.de
 * extras: centos.intergenia.de
424 packages excluded due to repository priority protections
Installed Packages
httpd-devel.i386                  2.2.3-22.el5.centos.2                installed

Paket NICHT installiert

# yum list httpd-devel
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
 * rpmforge: ftp-stud.fht-esslingen.de
 * base: centos.intergenia.de
 * updates: centos.intergenia.de
 * addons: centos.intergenia.de
 * extras: centos.intergenia.de
424 packages excluded due to repository priority protections
Available Packages
httpd-devel.i386                  2.2.3-22.el5.centos.2                  updates

Falls wie hier am Ende der letzten Zeile wie oben gezeigt updates und NICHT - installed steht, ist mit nachfolgendem Befehl, noch das Paket httpd-devel zu installieren:

# yum install httpd-devel
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
 * rpmforge: ftp-stud.fht-esslingen.de
 * base: centos.intergenia.de
 * updates: centos.intergenia.de
 * addons: centos.intergenia.de
 * extras: centos.intergenia.de
424 packages excluded due to repository priority protections
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package httpd-devel.i386 0:2.2.3-22.el5.centos.2 set to be updated
--> Processing Dependency: apr-devel for package: httpd-devel
--> Processing Dependency: apr-util-devel for package: httpd-devel
--> Running transaction check
---> Package apr-devel.i386 0:1.2.7-11.el5_3.1 set to be updated
---> Package apr-util-devel.i386 0:1.2.7-7.el5_3.2 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package             Arch      Version                       Repository    Size
================================================================================
Installing:
 httpd-devel         i386      2.2.3-22.el5.centos.2         updates      145 k
Installing for dependencies:
 apr-devel           i386      1.2.7-11.el5_3.1              updates      231 k
 apr-util-devel      i386      1.2.7-7.el5_3.2               updates       53 k

Transaction Summary
================================================================================
Install      3 Package(s)         
Update       0 Package(s)         
Remove       0 Package(s)         

Total download size: 429 k
Is this ok [y/N]: y
Downloading Packages:
(1/3): apr-util-devel-1.2.7-7.el5_3.2.i386.rpm           |  53 kB     00:00     
(2/3): httpd-devel-2.2.3-22.el5.centos.2.i386.rpm        | 145 kB     00:00     
(3/3): apr-devel-1.2.7-11.el5_3.1.i386.rpm               | 231 kB     00:00     
--------------------------------------------------------------------------------
Total                                           423 kB/s | 429 kB     00:01     
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : apr-devel                                         [1/3] 
  Installing     : apr-util-devel                                    [2/3] 
  Installing     : httpd-devel                                       [3/3] 

Installed: httpd-devel.i386 0:2.2.3-22.el5.centos.2
Dependency Installed: apr-devel.i386 0:1.2.7-11.el5_3.1 apr-util-devel.i386 0:1.2.7-7.el5_3.2
Complete!

mod_cband kompilieren

Der nächste Schritt wäre nun die Überprüfung, welche Optional Features für das Kompilieren von mod_cband zur Verfügung stehen und welche davon bei der Kompilation Verwendung finden sollen. Da aber aktuelle keine optionalen Features verfügbar sind, kann nachfolgender Befehl zur Kompilation verwendet werden:

# ./configure 

Die Anzeige sollte nach vielen Ausgaben, welche z.B. wie folgt aussehen:

checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
...
und mit einer Anzeige enden, die in etwa wie folgt aussieht:
...
configure: creating ./config.status
config.status: creating Makefile

Jetzt kann das „eigentliche“ Kompilieren von mod_cband erfolgen. Dies sollte in folgenden Schritten durchgeführt werden:

# make

apxs -Wc,-Wall -Wc,-DDST_CLASS=3 -c src/mod_cband.c
/usr/lib/apr-1/build/libtool --silent --mode=compile gcc -prefer-pic -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector
--param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -fno-strict-aliasing  -DLINUX=2 -D_REENTRANT 
-D_GNU_SOURCE -D_LARGEFILE64_SOURCE -pthread -I/usr/include/httpd  -I/usr/include/apr-1   -I/usr/include/apr-1  -Wall -DDST_CLASS=3  
-c -o src/mod_cband.lo
src/mod_cband.c && touch src/mod_cband.slo
src/mod_cband.c:81: warning: type qualifiers ignored on function return type
/usr/lib/apr-1/build/libtool --silent --mode=link gcc -o src/mod_cband.la  -rpath /usr/lib/httpd/modules -module -avoid-version    
src/mod_cband.lo

write "make install" to install module
Falls keine Fehler aufgetreten sein sollten, kann abschließend dann die eigentliche Installation mit folgendem Befehl durchgeführt werden:
# make install
apxs -Wc,-Wall -Wc,-DDST_CLASS=3 -i -a -n cband src/mod_cband.la
/usr/lib/httpd/build/instdso.sh SH_LIBTOOL='/usr/lib/apr-1/build/libtool' src/mod_cband.la /usr/lib/httpd/modules
/usr/lib/apr-1/build/libtool --mode=install cp src/mod_cband.la /usr/lib/httpd/modules/
cp src/.libs/mod_cband.so /usr/lib/httpd/modules/mod_cband.so
cp src/.libs/mod_cband.lai /usr/lib/httpd/modules/mod_cband.la
cp src/.libs/mod_cband.a /usr/lib/httpd/modules/mod_cband.a
chmod 644 /usr/lib/httpd/modules/mod_cband.a
ranlib /usr/lib/httpd/modules/mod_cband.a
PATH="$PATH:/sbin" ldconfig -n /usr/lib/httpd/modules
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/lib/httpd/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,--rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 755 /usr/lib/httpd/modules/mod_cband.so
[activating module `cband' in /etc/httpd/conf/httpd.conf]

Konfiguration

Die Konfiguration von mod_cband ist in der Hauptkonfigurationsdatei des Apache HTTP Servers und in den „virtuellen Hosts“ durchzuführen:

/etc/httpd/conf/httpd.conf

Folgende zusätzlich Eintragungen in der Konfigurationsdatei /etc/httpd/conf/httpd.conf des Apache HTTP Servers sind notwendig, um das Modul mod_cband zu einzubinden und zu laden (nur relevanter Ausschnitt):

...
#
# Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module modules/mod_foo.so
#
...
...
...
LoadModule cband_module modules/mod_cband.so
...

Um die Performance von mod_cband zu steigern, kann folgende Direktive ebenfalls noch verwendet werden:

...
CBandRandomPulse On
...

Erklärung

Bescheibung Erklärung
Name CBandRandomPulse
Description Turns On or Off the random pulse generator for data sending
Random pulse generator is a part of the speed-limiting implementation of mod_cband.
This directive changes the way a connection's speed is determined and enforced.
The connections' speeds are measured within some time period and then provided for in
that period. When r.p.g. is enabled this period is chosen randomly,
providing for a statisticaly saner load distribution. Disabling this causes spikes both in
bandwidth and cpu usages
Context Global
Syntax CBandRandomPulse On/Off

/etc/httpd/conf.d/vhost.conf

Eine mögliche Konfiguration eines „virtuellen Hosts“ könnte in etwa wie nachfolgend am „virtuellen Host“ - http://www.dokuwiki.tachtler.net dargestellt aussehen.

Folgende Bandbreitenbeschränkungen sollen dabei zum Einsatz kommen:

  • Banbreitenbeschränkung für localhost - Bandbreite 1024kbps, 12 Anfragen pro Sekunde, 10 gleichzeitige Verbindungen
  • Banbreitenbeschränkung für das interne Netzwerk internal_network - Bandbreite 1024kbps, 12 Anfragen pro Sekunde, 10 gleichzeitige Verbindungen
  • Banbreitenbeschränkung für die externe IP-Adresse external_network - Bandbreite 1024kbps, 12 Anfragen pro Sekunde, 10 gleichzeitige Verbindungen
  • Banbreitenbeschränkung für alle anderen - Bandbreite 512kbps, 10 Anfragen pro Sekunde, 8 gleichzeitige Verbindungen

Bevor wir jedoch mit dem Konfigurieren des „virtuellen Hosts“ beginnen, ist es erforderlich eine sog. scoreboard-Datei anzulegen, in die mod_cband Statistik-Daten ablegen kann. Dies kann mit nachfolgendem Befehl realisiert werden.

# touch /var/www/html/dokuwiki/mod_cband_scoreboard_file

:!: WICHTIG - Die Datei muss für den Benutzer, welcher für den Apache HTTP Server derfiniert ist - hier apache beschreibbar sein!

Um die Besitz- und Zugriffsrechte richtig zu setzen sind nachfolgende Befehle notwendig. Zum setzen der richtigen Besitzrechte:

# chown apache.apache /var/www/html/dokuwiki/mod_cband_scoreboard_file
und der richtigen Schreibrechte:
# chmod 740 /var/www/html/dokuwiki/mod_cband_scoreboard_file

Nach der Anlage der Statistik-Datei, könnte eine Definition einen „virtuellen Hosts“ wie folgt aussehen (nur relevander Ausschnitt):

#
# Tachtler
# Configuration global settings mod_cband
#
<IfModule mod_cband.c>
        <CBandClass class_localhost>
                CBandClassDst 127.0.0.0/8
        </CBandClass>
 
        <CBandClass class_internal_network>
                CBandClassDst 192.168.0.0/24
        </CBandClass>
 
        <CBandClass class_external_network>
                CBandClassDst 88.217.171.167/32
        </CBandClass>
</IfModule>
...
...
...
#
# dokuwiki.tachtler.net
#
<VirtualHost *:80>
        ServerAdmin webmaster@tachtler.net
        ServerName dokuwiki.tachtler.net
        ServerAlias www.dokuwiki.tachtler.net
        ServerPath /
        DocumentRoot "/var/www/html/dokuwiki"
        <Directory "/var/www/html/dokuwiki">
                Options FollowSymLinks
                AllowOverride None
                Order allow,deny 
                Allow from all
        </Directory>
        DirectoryIndex index.php
        ErrorLog logs/error.log
        CustomLog logs/access.log combined
 
        # Tachtler (mod_cband)
        <IfModule mod_cband.c>
                # Specifies maximal speed for any remote client from some destination class
                # CBandClassRemoteSpeed class_name kbps rps
                # class_name - name of defined destination class
                # kbps - maximal transfer speed in kbps or kB/s
                # rps - maximal requests per second
                # max_conn - maximal number of simultaneous connections
                CBandClassRemoteSpeed class_localhost 1024kbps 12 10
                CBandClassRemoteSpeed class_internal_network 1024kbps 12 10
                CBandClassRemoteSpeed class_external_network 1024kbps 12 10
 
                # Specifies a maximal speed for a virtualhost
                # kbps - maximal transfer speed in kbps or kB/s
                # rps - maximal requests per second
                # max_conn - maximal number of simultaneous connections
                CBandSpeed 512kbps 10 8
 
                # Specifies virtualhost's scoreboard file
                CBandScoreBoard /var/www/html/dokuwiki/mod_cband_scoreboard_file
        </IfModule>
 
</VirtualHost>
...

/cband-status

mod_cband besitzt die Möglichkeit den aktuellen Status abzufragen.

Dafür muss die Definition innerhalb der Konfigurationsdatei /etc/httpd/conf.d/vhost.conf nur geringfügig angepasst werden, damit alle „virtuellen Hosts“, welche eine Definition für mod_cband enthalten, auch die Status-Informationen preis geben können.

Folgende Anpassung an /etc/httpd/conf.d/vhost.conf ist erforderlich (nur relevanter Ausschnitt):

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

Der komplette „Absatz“ in der Konfigurationsdatei /etc/httpd/conf.d/vhost.conf, sollte dann wie folgt aussehen (nur relevanter Ausschnitt):

#
# Tachtler
# Configuration global settings mod_cband
#
<IfModule mod_cband.c>
        <CBandClass class_localhost>
                CBandClassDst 127.0.0.0/8
        </CBandClass>
 
        <CBandClass class_internal_network>
                CBandClassDst 192.168.0.0/28
        </CBandClass> 
 
        <CBandClass class_external_network>
                CBandClassDst 88.217.171.167/32
        </CBandClass>
</IfModule>
...
...
...
#
# dokuwiki.tachtler.net
#
<VirtualHost *:80>
        ServerAdmin webmaster@tachtler.net
        ServerName dokuwiki.tachtler.net
        ServerAlias www.dokuwiki.tachtler.net
...
        <Location /cband-status>
                SetHandler cband-status
        </Location>
...
</VirtualHost>

Der Aufruf kann dann durch anhängen an die Adresse des „virtuellens Hosts“ von /cband-status erfolgen. Hier ein Beispiel:

mod_cband-status

Neustart Apache HTTP Server

Ein erneuter oder erster Start des Apache HTTP Server mit folgenden Befehl für eine erstmaligen Start

# service httpd start
oder einen erneuten Start des Apache HTTP Server mit folgendem Befehl
# service httpd restart
macht die oben beschriebenen Konfigurationen für den Apache HTTP Server wirksam.

Dokumentation mod_cband

Die Dokumentation von mod_cband kann auch unter /tmp/mod-cband-0.9.7.5/doc gefunden werden und liegt in der Datei:

  • /tmp/mod-cband-0.9.7.5/doc/documentation.txt

:!: Nachfolgend der Auszüge aus /tmp/mod-cband-0.9.7.5/doc/documentation.txt'' - im englischen Original

Units accepted in various directives

    * transfer speeds:
          o kbps, Mbps, Gbps - multiples of "bits per second", respectively: 1024, 1024*1024 and 1024*1024*1024 bps
          o kb/s, Mb/s, Gb/s - multiples of "bytes per second", respectively: 1024, 1024*1024 and 1024*1024*1024 b/s
          o defaults to kbps

    * transfer quotas:
          o K, M, G - multiples of bytes, respectively: 1000, 1000*1000 and 1000*1000*1000 bytes
          o Ki, Mi, Gi - multiples of bytes, respectively: 1024, 1024*1024 and 1024*1024*1024 bytes
          o defaults to K

    * time periods:
          o S, M, H, D, W - multiples of seconds: Seconds, Minutes, Hours, Days, Weeks; respectively: 1, 60, 3600, 86400, 604800 seconds
          o defaults to S

Directives

Name            CBandDefaultExceededURL
Description     Default URL where mod_cband should redirect all requests to the virtualhost or 
                user when the configured transfer limit is exceeded
NOTE:           If you don't specify the exceeded URL location then standard 503 Service Unavailable 
                will be sent
Context         Server config
Syntax          CBandDefaultExceededURL URL
Name            CBandDefaultExceededCode
Description     The http code sent to the user when the configured transfer is exceeded
Context         Server config
Syntax          CBandDefaultExceededCode HTTP_CODE
Example         CBandDefaultExceededCode 509
Name            CBandScoreFlushPeriod
Description     Specifies a period after which the score for the virtualhost or user is written to the scoreboard file. 
                Use this to improve mod_cband's performance
Default         1
Context         Server config
Syntax          CBandScoreFlushPeriod number_of_requests
Example         CBandScoreFlushPeriod 100
                Any virtualhost's or user's scoreboard will be saved after 100 requests
Name            CBandSpeed
Description     Specifies a maximal speed for a virtualhost
Context         <Virtualhost>
Syntax          CBandSpeed kbps rps max_conn
                kbps - maximal transfer speed in [kMG]bps or [kMG]B/s
                rps - maximal requests per second
                max_conn - maximal number of simultaneous connections
Example         CBandSpeed 1024 10 30
                Specifies maximal speed 1024kbps (1024 * 1024 bits per second), 
                maximal 10 requests per second and with a maximum of 30 open connections
NOTE:           This feature is available from version 0.9.6.0
Name            CBandRemoteSpeed
Description     Specifies maximal speed for any remote client
Context         <Virtualhost>
Syntax          CBandRemoteSpeed kbps rps max_conn
                kbps - maximal transfer speed in [kMG]bps or [kMG]B/s
                rps - maximal requests per second
                max_conn - maximal number of simultaneous connections
Example         CBandRemoteSpeed 20kb/s 3 3
                Specifies maximal speed 20kB/s (20 * 1024 bytes per second), 
                maximal 3 requests per second and 3 open connections for any remote client
NOTE:           This feature is available from version 0.9.6.1-rc2
Name            CBandClassRemoteSpeed
Description     Specifies maximal speed for any remote client from some destination class
Context         <Virtualhost>
Syntax          CBandClassRemoteSpeed class_name kbps rps
                class_name - name of defined destination class
                kbps - maximal transfer speed in kbps or kB/s
                rps - maximal requests per second
                max_conn - maximal number of simultaneous connections
Example         <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

                Specifies maximal speed 20kB/s (20 * 1024 bytes per second), 
                maximal 2 requests per second and 3 open connections for any remote client from 
                class googlebot_class
NOTE:           This feature is available from version 0.9.6.1-rc2
Name            CBandRandomPulse
Description     Turns On or Off the random pulse generator for data sending
                Random pulse generator is a part of the speed-limiting implementation of mod_cband. 
                This directive changes the way a connection's speed is determined and enforced. 
                The connections' speeds are measured within some time period and then provided for in 
                that period. When r.p.g. is enabled this period is chosen randomly, 
                providing for a statisticaly saner load distribution. Disabling this causes spikes both in 
                bandwidth and cpu usages
Context         Global
Syntax          CBandRandomPulse On/Off
Name            CBandLimit
Description     Specifies bandwidth limit for virtualhost
Context         <Virtualhost>
Syntax          CBandLimit limit
                limit - bandwidth quota size, available units: K (kilo), M (mega), G (giga), Ki (kibi), 
                Mi (mebi), Gi (gibi)
Example         CBandLimit 10M
                Specifies 10 * 1000 * 1000 bytes bandwidth quota

                CBandLimit 10Mi
                Specifies 10 * 1024 * 1024 bytes bandwidth quota
Name            CBandClassLimit
Description     Specifies bandwidth limit for virtualhost's destination class
Context         <Virtualhost>
Syntax          CBandClassLimit class_name limit
                class_name - the name of defined class
                limit - bandwidth quota size, available units: K (kilo), M (mega), G (giga), Ki (kibi), 
                Mi (mebi), Gi (gibi)
Name            CBandExceededURL
Description     Specifies a URL where mod_cband should redirect all requests to a virtualhost when the 
                configured transfer limit is exceeded 
                
                NOTE: If you don't specify the exceeded URL location then standard 503 Service Unavailable will be sent

Context         <Virtualhost>
Syntax          CBandExceededURL URL
Name            CBandExceededSpeed
Description     Specifies maximal speed to which mod_cband slows down a virtualhost when the configured transfer limit is exceeded
Context         <Virtualhost>
Syntax          CBandExceededSpeed kbps rps max_conn
                kbps - maximal transfer speed in kbps or kB/s
                rps - maximal requests per second
                max_conn - maximal number of simultaneous connections
NOTE:           This feature is available from version 0.9.6.0
Name            CBandScoreboard
Description     Specifies virtualhost's scoreboard file
Context         <Virtualhost>
Syntax          CBandScoreboard path
NOTE:           The path must be writeable for the apache-user
Name            CBandPeriod
Description     Specifies a period after which a virtualhost's usages are cleared
Context         <Virtualhost>
Syntax          CBandPeriod period
                period - available units: S (seconds), M (minutes), H (hours), D (days), W (weeks)
Example         CBandPeriod 1W
                CBandPeriod 14D
                CBandPeriod 60M
Name            CBandPeriodSlice
Description     Specifies the period slice length
Default         slice_len = limit
Context         <Virtualhost>
Syntax          CBandPeriodSlice slice_length
Example         CBandLimit 100G
                CBandPeriod 4W
                CBandPeriodSlice 1W
                A period will be divided into 4 small slices (4W/1W = 4). Each slice has 100G/4=25G 
                bandwidth limit. After 1W slice limit will be 50G, after 2W will be 75G ...
Name            <CBandUser>
Description     Define a new cband user
Context         Server config
Syntax          <CBandUser user_name>
Name            CBandUserSpeed
Description     Specifies maximal speed for a cband user
Context         <CBandUser>
Syntax          CBandUserSpeed kbps rps max_conn
                kbps - maximal transfer speed in kbps or kB/s
                rps - maximal requests per second
                max_conn - maximal number of simultaneous connections
Example         CBandUserSpeed 100kb/s 10 5
                Specifies maximal speed 100 kB/s (100 * 1024 bytes per second), 
                maximal 10 requests per second and 5 open connections
NOTE:           This feature is available from version 0.9.6.0
Name            CBandUserLimit
Description     Specifies bandwidth limit for a cband user
Context         <CBandUser>
Syntax          CBandUserLimit limit
                limit - bandwidth quota size, available units: K (kilo), M (mega), G (giga), Ki (kibi), 
                Mi (mebi), Gi (gibi)
Example         CBandUserLimit 10M
                Specifies 10 * 1000 * 1000 bytes bandwidth quota

                CBandUserLimit 10Mi
                Specifies 10 * 1024 * 1024 bytes bandwidth quota
Name            CBandUserClassLimit
Description     Specifies bandwidth limit for a cband user's destination class
Context         <CBandUser>
Syntax          CBandUserClassLimit class_name limit
                class_name - the name of defined class
                limit - bandwidth quota size, available units: K (kilo), M (mega), G (giga), Ki (kibi), 
                Mi (mebi), Gi (gibi)
Name            CBandUserExceededURL
Description     Specifies a URL where mod_cband should redirect all requests to user's virtualhost when the 
                configured transfer limit is exceeded

                NOTE: If you don't specify the exceeded URL location then standard 503 Service Unavailable will be sent

Context         <CBandUser>
Syntax          CBandUserExceededURL URL
Name            CBandUserExceededSpeed
Description     Specifies maximal speed to which mod_cband slows down user when the configured transfer limit is exceeded
NOTE:           CBandUserExceededURL must not be used if you want to only slow down user's pages with 
                CBandUserExceededSpeed directive
Context         <CBandUser>
Syntax          CBandUserExceededSpeed kbps rps max_conn
                kbps - maximal transfer speed in kbps or kB/s
                rps - maximal requests per second
                max_conn - maximal number of simultaneous connections
NOTE:           This feature is available from version 0.9.6.0
Name            CBandUserScoreboard
Description     Specifies a user's scoreboard file
Context         <CBandUser>
Syntax          CBandUserScoreboard path
NOTE:           The path must be writeable for the apache-user
Name            CBandUserPeriod
Description     Specifies a period after which a user's usages are cleared
Context         <CBandUser>
Syntax          CBandUserPeriod period
                period - available units: S (seconds), M (minutes), H (hours), D (days), W (weeks)
Example         CBandUserPeriod 1W
                CBandUserPeriod 14D
                CBandUserPeriod 60M
Name            CBandUserPeriodSlice
Description     Specifies a period slice length
Default         slice_len = limit
Context         <CBandUser>
Syntax          CBandUserPeriodSlice slice_length
Example         CBandUserLimit 100G
                CBandUserPeriod 4W
                CBandUserPeriodSlice 1W
                A period will be divided into 4 small slices (4W/1W = 4). Each slice has 100G/4=25G 
                bandwidth limit. After 1W slice limit will be 50G, after 2W will be 75G ...

Status Handler Configuration Example

To view actual bandwidth limits, usages, users, scoreboards, add the following lines into the config file:
 
<Location /cband-status> 
SetHandler cband-status
</Location> 
 
<Location /cband-status-me> 
SetHandler cband-status-me
</Location> 
 
Then you can access the status page with a URL like:
http://server_name/cband-status
http://server_name/cband-status-me

In versions >=0.9.5-rc1 you can also view /cband-status handler in the XML format:

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

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
tachtler/apache_http_server_centos_5_-_mod_cband_-_bandbreitenbeschraenkung.txt · Zuletzt geändert: 2014/11/25 16:17 von klaus