Re: Непонятна работа limit_rate
On Wed, Oct 07, 2020 at 06:10:01PM +0300, Иван Мишин wrote: >Но вот при такой конфигурации: >limit_rate_after 15k; #150Mb >limit_rate 2048k; >proxy_max_temp_file_size 6144m; >Поведение не понятно. При таких параметрах директив работает так - >скачивается 150Мб и затем обрыв. Почему? Посмотрите логи прокси и бэкенда, посмотрите что выдаёт "wget -d". Для полноты можно посмотреть анализатором трафика где какая коннекция закрывается, обратить внимание на отметки времени, сравнить с заданными на всех узлах таймаутами. -- Eugene Berdnikov ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Непонятна работа limit_rate
При директивах limit_rate_after 15k; #150Mb limit_rate 2048k; proxy_max_temp_file_size 0; Скачивание происходит так как и ожидается, без обрывов и прочего, а так же обрезается скорость правильным образом в соответствии с директивами limit_rate_after и limit_rate. Но вот при такой конфигурации: limit_rate_after 15k; #150Mb limit_rate 2048k; proxy_max_temp_file_size 6144m; Поведение не понятно. При таких параметрах директив работает так - скачивается 150Мб и затем обрыв. Почему? ср, 7 окт. 2020 г. в 18:07, Иван Мишин : > При директивах > > вт, 6 окт. 2020 г. в 17:16, Maxim Dounin : > >> Hello! >> >> On Tue, Oct 06, 2020 at 10:42:47AM +0300, Evgeniy Berdnikov wrote: >> >> > 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Гб временного файла. когда качается быстро, он >> > > вообще в темп не пишется, если файл прилетает от апстрима быстрее >> > > чем забираем, то он уже пишется во временный файл. вы успеваете >> > > скачать столько, сколько прилетает до начала записи во временный >> > > файл + макс размер файла. >> > >> > Наличие лимита на размер временного файла это что, повод обрывать >> закачку? >> >> Наличие лимита - ни разу не повод обрывать закачку, nginx её и не >> обрывает. >> >> Другой вопрос, что если буфер забит - nginx'у некуда читать >> дополнительные данные, и в результате бэкенд может закрыть >> соединение по таймауту до того, как содержимое временного файла >> будет отдано клиену и соответственно nginx сможет дальше читать >> что-либо от бэкенда. >> >> При заявленном ограничении скорости в 2 мегабайта в секунду - >> отправка клиенту гигабайта временных данных займёт секунд 500 >> минимум. Если при этом с бэкенда эти данные летят по гигабитному >> каналу со скоростью 100 мегабайт в секунду - прилетят они секунд за >> 10. То есть между nginx'ом и бэкендом 490 секунд ничего не будет >> происходить. Шансов на то, что бэкенд дождётся при настройках по >> умолчанию - никаких. >> >> Соответственно нужно: >> >> - увеличить временный файл, чтобы ответы влезали; >> >> - или уменьшить временный файл, чтобы его содержимое могло >> отправиться до того, как сработает таймаут на бэкенде. >> >> Ну либо настраивать таймауты на бэкенде и/или ограничение >> скорости, чтобы опять же временный файл мог отправиться до того, >> как сработает таймаут на бэкенде. >> >> Вообще, когда речь идёт о том, что проксируются большие файлы - >> одним из лучших решений может быть просто выключенная буферизация >> на диск, "proxy_max_temp_file_size 0;". Это позволяет избежать не >> только проблем с таймаутами на бэкенде, но и траты ресурсов на >> disk i/o, а равно проблем с переполнением диска под временные >> файлы при большом количестве одновременных запросов. >> >> [...] >> >> -- >> Maxim Dounin >> http://mdounin.ru/ >> ___ >> nginx-ru mailing list >> nginx-ru@nginx.org >> http://mailman.nginx.org/mailman/listinfo/nginx-ru > > ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Непонятна работа limit_rate
При директивах вт, 6 окт. 2020 г. в 17:16, Maxim Dounin : > Hello! > > On Tue, Oct 06, 2020 at 10:42:47AM +0300, Evgeniy Berdnikov wrote: > > > 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Гб временного файла. когда качается быстро, он > > > вообще в темп не пишется, если файл прилетает от апстрима быстрее > > > чем забираем, то он уже пишется во временный файл. вы успеваете > > > скачать столько, сколько прилетает до начала записи во временный > > > файл + макс размер файла. > > > > Наличие лимита на размер временного файла это что, повод обрывать > закачку? > > Наличие лимита - ни разу не повод обрывать закачку, nginx её и не > обрывает. > > Другой вопрос, что если буфер забит - nginx'у некуда читать > дополнительные данные, и в результате бэкенд может закрыть > соединение по таймауту до того, как содержимое временного файла > будет отдано клиену и соответственно nginx сможет дальше читать > что-либо от бэкенда. > > При заявленном ограничении скорости в 2 мегабайта в секунду - > отправка клиенту гигабайта временных данных займёт секунд 500 > минимум. Если при этом с бэкенда эти данные летят по гигабитному > каналу со скоростью 100 мегабайт в секунду - прилетят они секунд за > 10. То есть между nginx'ом и бэкендом 490 секунд ничего не будет > происходить. Шансов на то, что бэкенд дождётся при настройках по > умолчанию - никаких. > > Соответственно нужно: > > - увеличить временный файл, чтобы ответы влезали; > > - или уменьшить временный файл, чтобы его содержимое могло > отправиться до того, как сработает таймаут на бэкенде. > > Ну либо настраивать таймауты на бэкенде и/или ограничение > скорости, чтобы опять же временный файл мог отправиться до того, > как сработает таймаут на бэкенде. > > Вообще, когда речь идёт о том, что проксируются большие файлы - > одним из лучших решений может быть просто выключенная буферизация > на диск, "proxy_max_temp_file_size 0;". Это позволяет избежать не > только проблем с таймаутами на бэкенде, но и траты ресурсов на > disk i/o, а равно проблем с переполнением диска под временные > файлы при большом количестве одновременных запросов. > > [...] > > -- > Maxim Dounin > http://mdounin.ru/ > ___ > nginx-ru mailing list > nginx-ru@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru