Я хотел бы ограничить скорость загрузки моих файлов .flv и .mp4 для каждого пользователя в моем домене. У моей страницы 1000-3000 посетителей в день, и они не могут смотреть мои вещи одновременно, потому что 1-2 человека получают всю мою пропускную способность.
Я бы хотел отдать 200КиБ / с на пользователя ...
Если у моего потока 10 слушателей, то они используют 2Mib / s, а не 30-40Mib / s ... И я хотел бы дать им минимум ..
Я пробовал модуль пропускной способности, но он работает для доменов, а не для пользователя.
BandwidthModule на ForceBandWidthModule на LargeFileLimit .flv 1 204800 LargeFileLimit .mp4 1 204800
Есть ли легко устанавливаемый модуль apache? Или можно ограничить только загрузку фибры? ... Ограничение скорости скачивания по IP или соединению ...
Если нет внутреннего решения Apache, и мы говорим здесь о Linux, может быть вариант сделать это с формированием трафика. Все, что вам нужно, это возможность (быстро) сообщить вне Apache, что соответствующий процесс принадлежит определенному пользователю. Возможно, вы сможете переписать URL-адреса ваших файлов, чтобы вместо этого Apache вызывал PHP-скрипт. Сценарий определит пользователя и идентификатор процесса и запишет их в небольшой «демон» (например, скрипт Python) перед отправкой запрошенных данных. Этот демон добавит правило iptables с параметром --pid-owner (больше не работает, см. Ниже: Изменить) в таблицу изменений и пометит пакет (по одному номеру для каждого (активного) пользователя).
Вы должны определить класс HTB для каждого одновременно активного пользователя. Фильтры tc будут назначать каждому пакету один из этих классов в зависимости от nfmark, установленного iptables. Вы можете решить, будут ли эти классы иметь 200 КБ / с в качестве жесткого ограничения или получить дополнительную полосу пропускания дополнительно. Таким образом, не имеет значения, сколько подключений открыл пользователь, ограничение будет глобальным для всех из них.
Время от времени «демону» приходилось проверять, все ли еще существуют процессы, и удалять правила для тех, которые ушли.
редактировать
Похоже, что опция --pid-owner была удалена из iptables. Возможность фильтрации по пользователю или группе, вероятно, не помогает. Но сценарий PHP знает адрес назначения, поэтому он может вызвать сценарий с этими параметрами, который создает соответствующее правило.
Это выглядит как mod_cband
вероятно, ваш лучший выбор. В CBandRemoteSpeed
Директива специально ограничивает количество подключений, подключений в секунду и скорость подключения для каждого IP-адреса клиента. Похоже, что у него нет опции «для каждого типа файла». Согласно документации он установлен на <VirtualHost>
поэтому, если вы хотите ограничить только файлы .flv и .mp4, вам нужно будет переместить их на виртуальный хост самостоятельно (скажем, streaming.example.com
) и включите там cband.
Так как DerfK уже упоминалось, mod_cband
сделает работу быстро и грязно, но это Загрузка процессора для более высокой нагрузки.
Волшебная вещь, стоящая за профессиональным регулированием полосы пропускания, заключается в том, чтобы обеспечить его как отдельная служба.
Если вы находитесь в среде совместного размещения, вы можете начать с дополнительной машины 1HE.