LINUX.ORG.RU

Как ограничить количество одновременно загружаемых файлов?

 ,


0

1

VDS с диском на 20гб, возможность загружать файлы размером пусть 100мб, возможность количества одновременных подключений 1000 клиентов.

А что если все они одновременно начнут загружать файл? Ну выполнять большой POST-запрос. nginx сохраняет его во временный файл, а дисковое пространство ограничено.

Пока POST-запрос не отправлен до конца, nginx не передаст его php-fpm, т.е. по сути мы имеем 1000 активных подключений, которые смеху ради поставились на паузу (ограничили скорость в 1кб) и потихоньку льют тебе файл на сервер.

И с точки зрения php ты ничего с этим сделать не сможешь, пока файл (POST) не придёт целиком, nginx не передаст его в работу на php-fpm, иначе было бы достаточно например сделать искусственное ограничение (на уровне приложения) в 10 пользователей, которые одновременно могут загружать файл.

Т.е. бэкед в этой ситуации вообще лох и ничего не может.

Поэтому такое ограничение необходимо установить на уровне nginx.

Как?

Смонтировать отдельную директорию, в виде отдельного файла (дискового образа) и когда там закончится место чтобы nginx выкидывал 50х ошибку клиенту? Чтобы место не закончилось на VDS, а в файле, клиенты всё равно будут страдать, а щито поделать...

★★★★★

Если тебе хочется заморочиться, можешь вместо того чтобы просто закинуть файл, сначала послать запрос на возможность его загрузки, получить токен, и не давать грузить пока токена нет. А юзеру повесить крутилку - подождите. Ну и да, время жизни запроса ограничивай.

ya-betmen ★★★★★
()
Последнее исправление: ya-betmen (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.