Назад | Перейти на главную страницу

Как ограничить скорость соединения

Я использую CentOS 6.4 и Plesk v11.5.30, хотя это необязательно делать через plesk.

Я хочу ограничить скорость подключения к определенному веб-сайту. Однако единственные параметры, которые предлагает мне Plesk, - это «Максимальное использование полосы пропускания» и «Ограничение количества подключений».

Максимальное использование полосы пропускания - это общая пропускная способность, используемая доменом, а количество подключений - это количество подключений (очевидно). Я хочу ограничить скорость до 200 Кбит / с независимо от того, сколько людей обращаются к домену. Даже если доступ только один человек, я не хочу, чтобы они могли использовать всю полосу пропускания, я хочу, чтобы они были ограничены до 200 кбит / с.

Есть ли у меня способ ограничить все отдельные подключения до 200 кбит / с, чтобы никто никогда не мог использовать более 200 кбит / с, но, конечно, если трафик высок, они могут использовать менее 200 кбит / с?

Чтобы это не было специфичным для plesk, это то, что указано в моей конфигурации, и я рад изменить ее вручную, если есть другой параметр, который я могу использовать:

<IfModule mod_bw.c>
    BandwidthModule On
    ForceBandWidthModule On
    Bandwidth all "0"
    MaxConnection all "0"
    BandWidthError 510
</IfModule>

Я никогда не использовал этот модуль, но документация кажется довольно прямым.

Директивы действительны внутри <VirtualHost> блокировать и будет применяться только к этому виртуальному хосту, если это так. Также похоже, что они не наследуются от более высоких частей конфигурации, поэтому вы должны поместить все соответствующие директивы в виртуальный хост.

Ваша текущая конфигурация устанавливает ограничение пропускной способности на «0», что означает отсутствие ограничения. Вам нужно 200 КБ (я полагаю, вы имели в виду килобайты, а не килобиты).

Поместите это в виртуальный хост, который вы хотите ограничить:

BandwidthModule On
ForceBandWidthModule On
Bandwidth all 204800

По умолчанию MinBandwidth составляет 256 байт / с, поэтому вы можете обрабатывать одновременно 800 пользователей, прежде чем любой из них начнет получать сообщения об ошибках. Если вы считаете, что 256 байт / с немного мало, вы также можете добавить MinBandwidth all 1024 Это будет означать, что когда у вас будет более 200 одновременных запросов, 201-й получит сообщение об ошибке вместо запрашиваемой страницы, а для всех 200 до этого будет гарантировано не менее 1 КБ / с.

Я обычно не беспокоюсь об этих <IfModule> блоки, потому что все, что они делают, это скрывают ваши ошибки и заставляют вас думать, что mod_bw работает, когда он даже не загружен.

Я понял это с помощью LargeFileLimit:

<IfModule mod_bw.c>
BandwidthModule On
ForceBandWidthModule On
Bandwidth all "52428800"
MaxConnection all "400"
LargeFileLimit * 1024 204800
BandWidthError 510
</IfModule>

Это будет означать, что домен ограничен полосой пропускания 50 МБ (52428800), что он может иметь только 400 подключений одновременно и что любые файлы размером более 1 МБ будут ограничены до 200 Кбит / с (204800).

Для тех, кто прочитает это позже, вы также можете добавить расширение вместо *, чтобы ограничить только zip, rars, avis или что-то еще.