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