Как вы можете ограничить скорость загрузки с помощью Rails или Nginx - PullRequest
2 голосов
/ 17 ноября 2010

У меня есть приложение ruby ​​on rails, работающее на passenger / nginx.Приложение позволяет пользователям иметь доступ к загрузке очень больших файлов (резервные копии виртуальных машин, иногда 200 гигабайт), и у меня разрывное соединение с моим провайдером до 100 Мбит / с.

Проблема в том, что, если вы начнете загружать один из этих больших файлов, передача поднимется как можно выше, чего я не хочу.Я бы хотел ограничить загрузку этих больших файлов фиксированной скоростью, например, 150 Кбит / с, и в то же время разрешать более высокие скорости в других частях приложения.Это возможно?

1 Ответ

5 голосов
/ 17 ноября 2010

Вы должны включить такую ​​директиву в файл конфигурации nginx (внутри блока конфигурации вашего сервера):

limit_rate 150k;

Это ограничивает скорость передачи ответа клиенту. Он работает как ограничение для каждого соединения, а не для общей скорости передачи сервера. (Возможно, вы можете настроить max_clients = worker_processes * worker_connections в качестве обходного пути, чтобы ограничить общий перевод.)

Посмотрите документацию nginx для limit_rate . Существует также директива limit_rate_after, которая полезна для установки этого ограничения только после того, как загрузка превысит определенный размер.

...