Apache bandwidth limit


my english version
Durch mod_cband lässt sich die verfügbare Bandbreite von Apache nach verschiedenen Kriterien drosseln.

Das Modul kann von http://cband.linux.pl/download/ oder auch von http://sourceforge.net/projects/cband/ heruntergeladen werden.

Zum Installieren reicht wie üblich

./configure

make

make install

Voraussetzung ist aber das APache eXtenSion tool. Die meisten Distributionen bieten mod_cband aber auch direkt an, so dass bspw. YaST auch zum Ziel führt. Oder einfach nur

apt-get install apache2-prefork-dev

bei Debian.

Bei einem 64bit-System muss ggf. vor dem make das Makefile angepasst werden. Aus

APXS_OPTS=-Wc,-Wall -Wc,-DDST_CLASS=3

wird

APXS_OPTS=-lm -Wc,-Wall -Wc,-DDST_CLASS=3

Bei einer Installation aus den Sourcen muss das Laden des Moduls in Apache eingetragen werden. Bei mir ist das /etc/apache2/sysconfig.d/loadmodule.conf:

LoadModule cband_module /usr/lib64/apache2/mod_cband.so


Danach können Limits sowohl global als auch per vHost genutzt werden. Ich nutze das Modul primär für meinen clamav-mirror. In der entsprechenden vHost steht

<IfModule mod_cband.c>
# s. /etc/apache2/conf.d/cband.conf
# CBandSpeed
# Specifies a maximal speed for a 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
# CBandRemoteSpeed
# Specifies maximal speed for any remote client
# CBandRemoteSpeed kbps rps max_conn
CBandSpeed 30M 1000 750
CBandClassRemoteSpeed myServer 10M 10 20
CBandRemoteSpeed 5M 9 4
</IfModule>


Praktisch ist insbesondere “CBandClassRemoteSpeed myServer”. Man kann nämlich verschiedene Werte an eigene, globale, Definitionen binden. In dem Fall bekommen meine eigenen Server eine größere Bandbreite, wenn sie Updates vom Mirror holen:

<CBandClass myServer>
CBandClassDst 1.2.3.4
CBandClassDst 2.3.4.5
CBandClassDst 5.6.7.8
</CBandClass>


Man kann auch wunderbar die Zugriffe von googlebot global oder per vHost limitieren. Dazu wird eine entsprechende Class in /etc/apache2/conf.d/cband.conf definiert:

<CBandClass googlebot_class>
# googlebot
CBandClassDst 66.249.64/24
CBandClassDst 66.249.65/24
CBandClassDst 66.249.66/24
CBandClassDst 66.249.71/24
CBandClassDst 66.249.72/24
CBandClassDst 66.249.79/24
</CBandClass>


Und das ganze bei einem beliebigen vHost mittels

<IfModule mod_cband.c>
CBandClassRemoteSpeed googlebot_class 20kb/s 2 3
</IfModule>


eingetragen.

Aus Performancegründen kann man noch in /etc/apache2/conf.d/cband.conf

CBandScoreFlushPeriod 1
CBandRandomPulse On eintragen.


Für alle Features verweise ich dann aber doch lieber auf den Inhalt des Archives. 😉 Die Verwendung eines Scoreboards habe ich hier beschrieben.

Leave a comment

Your email address will not be published. Required fields are marked *