При директивах вт, 6 окт. 2020 г. в 17:16, Maxim Dounin <mdou...@mdounin.ru>:
> 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