Re: Непонятна работа limit_rate

Илья Шипицин chipitsine на gmail.com
Вт Окт 6 10:21:14 UTC 2020


вт, 6 окт. 2020 г. в 12:43, Evgeniy Berdnikov <bgx на protva.ru>:

> On Mon, Oct 05, 2020 at 10:24:17PM +0300, Alexey wrote:
> > День добрый!
> >
> > Вы качаете файл, получаемых от прокси апстрима?
> >
> https://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_max_temp_file_size
> >
> > Вы упираетесь в 1Гб временного файла. когда качается быстро, он
> > вообще в темп не пишется, если файл прилетает от апстрима быстрее
> > чем забираем, то он уже пишется во временный файл. вы успеваете
> > скачать столько, сколько прилетает до начала записи во временный
> > файл + макс размер файла.
>
>  Наличие лимита на размер временного файла это что, повод обрывать закачку?
>

вы отдаете проксируемый контент по мере чтения.
статус 200 вы отдаете практически сразу.
поэтому клиент видит 200.

потом вы начинаете вычитывать ответ, и постепенно отдавать клиенту.

это регулируется (на выбор)

proxy_buffering (по умолчанию включено)
X-Accel-Buffering (можно отдать с апстрима)
proxy_max_temp_file_size (по  умолчанию 1Гб)

если вы с апстрима вычитываете на wire speed, а отдаете в узную дырочку, то
все шансы, что ответ попытается сбуферизоваться.
и это у него получится вплоть до размера 1Гб

а дальше - вы уже отдали (в сторону клиента) 200. поменять уже не можете.


это дефолтные настройки. их не меняют с целью сохранения совместимости
(вдруг кто-то от них зависит).
предполагается ответственный подход. если вы несчастливы с дефолтными
настройками - читаете документацию, меняете на нужные.


>  Я бы предложил начать с wget -d.
>
> > 05.10.2020 20:16, Иван Мишин пишет:
> > >Забыл уточнить, что при обрыве в акцес логах все равно значится
> > >200 код, а в ерор логах пусто.
> > >
> > >пн, 5 окт. 2020 г. в 19:47, Иван Мишин <simplebox66 на gmail.com
> > ><mailto:simplebox66 на gmail.com>>:
> > >
> > >    Добрый день!
> > >    Есть локейшн с настроенными вот такими директивами:
> > >      limit_rate_after 150000k; #150Mb
> > >      limit_rate 2048k;
> > >
> > >    Пробую качать с помощью wget большой файл, и примерно через 7
> > >    минут 49-55 секунд закачка обрывается ну и соответственно объем
> > >    (1.1Гб) скачанных данных в зависимости от времени слегка разный.
> > >    Как только убирают указанные выше две директивы, так все логично
> > >    быстро качается и самое главное без обрыва , качается целиком.
> > >    А проблема заключается в том что указанными директивами я лишь
> > >    хотел подрезать скорость, но не понятно почему при этом файл не
> > >    скачивается до конца! До 1.1Гб файлы скачиваются нормально, а
> > >    больше уже нет. Хотел было грешить на таймауты какие-нибудь, но
> > >    время обрыва хоть и примерно одинаковое, но все же не постоянное,
> > >    поэтому идею с таймаутами отбросил.
> > >
> > >    Прошу подсказать как решить проблему?
> > >
> --
>  Eugene Berdnikov
> _______________________________________________
> nginx-ru mailing list
> nginx-ru на nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20201006/87bbef99/attachment-0001.htm>


Подробная информация о списке рассылки nginx-ru