From: Алексей Кеда (lissyara) <admin@lissyara.su.>
Date: Mon, 27 Apr 2008 18:21:07 +0000 (UTC)
Subject: mod_bandwidth - модуль для ограничения скорости загрузки файлов
Оригинал: http://www.lissyara.su/?id=1135
Модуль mod_bandwidth для apache1.3.x для ограничения
скорости скачивания контента. Основной недостаток - понимает только
статический контент - динамика созданная при помощи php пролетает
мимо него. Масса настроек - позволяет очень широко поиграться
скоростями по IP, имени домена... Пригодится если необходимо
ограничить скорость скачивания с сайта файлов, музыки или другого
статического контента.
<IfModule mod_bandwidth.c>
# Включен (On), или отключен модуль (Off)
BandWidthModule On
# Директория для хранения временных файлов
BandWidthDataDir /tmp/bandwith
# С какой периодичностью отдавать куски файла
# (Дело в том, что модуль не ограничивает скорость скачивания клиентом,
# он отдаёт данные кусками, на максимальной скорости, а между кусками
# ждёт некоторое время. Вот это время и фирурирует в этом параметре.
# время - в микросекундах! (надо заметить, что при числах меньше
# десяти тыщщ у меня ничё не работало...)
BandWidthPulse 10000
# Собственно скорость, с которой будет отдавать данные клиентам,
# тут же указываются клиенты
# анлим для локалки
BandWidth 192.168. 0
# анлим для моего домена, т.е. для посетителей,
# которых IP резольвится типа gate.lissyara.su ....
BandWidth lissyara.su 0
# Скорость, в байт/секунду для всех остальных, - на
# самом деле 1кб/с - это жестоко... Надо больше...
BandWidth all 1024
# В этом параметре указывается скорость с которой будут отдаваться
# большие файлы - тут же указывается и размер (надо заметить, что
# размер файлов указывается в килобайтах, а скорость в байтах/секунду)
# файл размером больше 100кб будет отдаваться со скоростью 2048 байт/с
LargeFileLimit 100 2048
# файл размером больше 500кб будет отдавать со скоростью 4кб/с
# т.е. при размере от 100 до 500 кб скорость
# будет 2кб - согласно предыдущей директиве
LargeFileLimit 500 4096
# Максимальное число коннектов - 0 анлим.
MaxConnection 100
# Минимальная скорость - пунктик напрямую взаимосвязан с
# парамером BandWidth - т.е. если поставить BandWidth 3кб/с, а
# MinBandWidth 1кб/с то один клиент будет получать все три кб/с
# если клиентов будет два - то получат по полтора кб/с а вот
# если их будет сотня, то каждый получит по килобайту - это то
# и указывается в MinBandWidth. Если поставить 0 - это будет
# дефолтовое значение 256 байт/с, а -1 - тогда будет отдавать
# каждому со cкоростью указанной в BandWidth
# Синтаксис такой же как и у BandWidth
MinBandWidth lissyara.su -1
MinBandWidth all 512
</IfModule>
Конфиг для примера - чтоб было видно, что скорость зарубает - в
реальной жизни, конечно, надо будет скорость поднять, иначе посетители
уйдут, не дождавшись загрузки страницы... Затем создаём директорию
временных файлов, и даём на неё права пользователю, от которого бегает
apache:
И меня ожидал сюрприз - не работало.... Скорость какая была какая и
есть. В httpd-access.log всё было нормально, а вот в
/var/log/httpd-error.log сыпались ошибки:
[Fri Feb 3 11:54:00 2006] [error] (2)No such file or directory:
mod_bandwidth : Can't create/access master file
/tmp/bandwith/master/86:282631
[Fri Feb 3 11:54:00 2006] [error] (2)No such file or directory:
mod_bandwidth : Can't create/access master file
/tmp/bandwith/master/86:282631
[Fri Feb 3 11:54:00 2006] [error] (2)No such file or directory:
mod_bandwidth : Can't create/access master file
/tmp/bandwith/master/86:282631
Вот как... А по документации он должен был создать субдиректории
сам... Ну и ладно - делаю все, которые он сам должен был сделать: