Ограничение членства по пропускной способности

Я только что развернул приложение Codeigniter для Amazon EC2 (используя S3 для мультимедиа и RDS для MySQL).

Мне нужно ограничить доступ к учетной записи пользователя на основе используемой полосы пропускания – учетные записи будут основаны на пропускной способности, например, базовая учетная запись £ x для до 20 ГБ в месяц и т. Д.

Однако я понятия не имею, что лучший способ сделать это.

Мои экземпляры EC2 – это Ubuntu с Apache2, если это помогает.

Любые идеи оценили!

Благодаря!

Вы можете использовать API-интерфейс amazon для проверки использования полосы пропускания вместо использования журналов. как вы сказали, что вы используете s3 для управления активами, хорошо, если вы создадите новый ковш для каждого пользователя и проверьте использование полосы пропускания, а затем ограничите учетную запись, если он превысит этот предел.

Ограничение пропускной способности для каждого подключения для Linux-ПК

Вам нужно установить инструмент Lighttpd, его веб-сервер. полезно ограничить пропускную способность для каждого соединения, а также установить Axel для увеличения и уменьшения количества подключений.

sudo apt-get install axel

http://www.cyberciti.biz/tips/installing-and-configuring-lighttpd-webserver-howto.html

за соединение я добавляю эту команду в этот путь / etc / lighttpd /lighttpd.conf.

connection.k bytes-per-second = 70

Я ограничиваю полосу пропускания 70 кб / сек, и я тестировал каждое соединение в течение 5 раз, и я наблюдал минимальное время, максимальное время и рассчитанное среднее время. Я повторил это до 10 подключений.

Вы можете создать собственный журнал с Apache для отслеживания количества переданных байтов. Трудная часть будет ассоциировать это с данным пользователем. Вероятно, комбинация файлов cookie и, возможно, удаленного IP.

Затем вы берете этот журнал и обрабатываете его в фоновом режиме.

S3 / Cloudfront может предоставлять похожие журналы, но вы, вероятно, не сможете связать их с пользователем.

Если вы используете буферизацию вывода в PHP, вы можете вызвать ob_get_length() непосредственно перед вызовом ob_end_flush() чтобы получить размер отправляемого клиенту выходного буфера.

Если вы также реализуете обработчик PHP для всех файлов (вместо того, чтобы разрешать прямые ссылки на файлы через Apache), у вас будет довольно приличное представление о том, сколько контента вы отправляли каждому клиенту.