Главная > FAQ > Установка mod_cband для регулирования скорости раздачи файлов в Apache

Установка mod_cband для регулирования скорости раздачи файлов в Apache

Назрела необходимость ограничить скорость раздачи файлов на файловом сервере. Так как по дефолту в настройках Апача такая функциональность отсутствует, то я решил использовать один из дополнительных модулей. К сожалению с mod_bw у меня не сложилось. Он установился, но установленные ограничения почему-то не работали. Поэтому я решил использовать альтернативу в виду mod_cband. Итак установка которая работает в CentOS (и скорее всего в большинстве других дистрибутивов).

1) Идем в какую-нибудь временную директорию:

>> cd /var/tmp

2) Сначала убеждаемся, что у нас установлена фича для Апача позволяющая с легкостью устанавливать новые модули (httpd-devel). Обычно программа находится по адресу /usr/sbin/apxs или /usr/sbin/apxs2. Если её нет ставим:

>> yum -y install httpd-devel

3) Получаем свежий дистрибутив модуля (с выходом новой версии адрес меняется, необходимо уточнять его здесь: http://codee.pl/cband.html):

>> wget http://cband.linux.pl/download/mod-cband-0.9.7.5.tgz

4) Распаковываем:

>> gtar xvf mod-cband-0.9.7.5.tgz

5) Переходим в папку:

>> cd mod-cband-0.9.7.5

6) Запускаем конфигурацию. Внимание тут частенько возникает проблема с тем, что конфигуратор не может найти программу apxs. Поэтому лучше указать её вручную:

>> ./configure —with-apxs=/usr/sbin/apxs

7) Собираем раз:

>> make

8) Собираем два:

>> make install

Убедитесь, что в конце выскочила строчка: [activating module `cband’ in /etc/httpd/conf/httpd.conf]

Модуль установлен, теперь необходимо поправить конфиг Апача по адресу /etc/httpd/conf/httpd.conf  (на разных системах адрес может отличаться, ваш адрес можно узнать из строчки выше «activating module …») .

Сначала проверяем что модуль прописался в конфиг ищем строчку вида:
«LoadModule cband_module», если она есть значит все в порядке.

Далее для нужного юзера можно прописать его возможности. У модуля богатый функционал, поэтому рекомендую посмотреть документацию на сайте автора:  http://codee.pl/cband_documentation.html

Мне требовалось ограничить общую скорость раздачи для всего сервера и скорость доступную одному пользователю. Ищем описание пользователя WebServer’а. Обычно такой уже есть:

<VirtualHost 1.2.3.4:80>
ServerName example.ru
DocumentRoot /var/www/example/data/www/ example.ru
ServerAdmin webmaster@ example.ru
</VirtualHost>

И добавляем внутрь следующие строчки:

<IfModule mod_cband.c>
CBandSpeed 80Mbps 100 300
CBandRemoteSpeed 4000kbps 3 3
</IfModule>

Получаем:

<VirtualHost 1.2.3.4:80>
ServerName example.ru
DocumentRoot /var/www/example/data/www/ example.ru
ServerAdmin webmaster@ example.ru
<IfModule mod_cband.c>
CBandSpeed 80Mbps 100 300
CBandRemoteSpeed 4000kbps 3 3
</IfModule>
</VirtualHost>

В итоге, что мы имеем максимальная скорость для всего домена 80 Мбит, максимум 100 запросов в секунду и 300 соединений. Для одного юзера для домена максимум 4Мбита 3 запроса в секунду и 3 соединения.

Осталось только перезагрузить Apache и убедиться что все в порядке:
>> /etc/init.d/httpd restart

Должно быть что-то вроде:
Stopping httpd:      [  OK  ]
Starting httpd:        [  OK  ]

Categories: FAQ Tags: ,
  1. Николай
    3 ноября 2012 в 03:16 | #1

    Доброй ночи.

    Подскажите, пожалуйста, как сконфигурировать модуль для апача, находящегося по опредленному пути. У меня на сервере 2 апачевских инстанса, и модуль, как в примере, цепляется за /etc/httpd/conf/httpd.conf.

  2. Turbo
    3 ноября 2012 в 10:49 | #2

    @Николай
    Я так редко занимаюсь сейчас конфигурацией… Но подозреваю что вот в этой строчке:
    LoadModule cband_module — надо прописать полный путь до модуля.

  1. Пока что нет уведомлений.