nginx和uwsgi非常大的文件上传(> 3Gb)

时间:2015-10-29 14:26:25

标签: file-upload nginx upload uwsgi

也许有人知道该怎么做。我试图上传大于3Gb的文件。没问题,如果我使用下一个配置上传文件高达2Gb:

Nginx的:

client_max_body_size 5g;
client_body_in_file_only clean;
client_body_buffer_size 256K;

proxy_read_timeout 1200;
keepalive_timeout 30;
uwsgi_read_timeout 30m;

UWSGI选项:

harakiri 60
harakiri 1800
socket-timeout 1800
chunked-input-timeout 1800
http-timeout 1800

当我上传大(近4Gb)文件时,它上传~2-2.2Gb并因错误而停止:

[uwsgi-body-read] Timeout reading 4096 bytes. Content-Length: 3763798089 consumed: 2147479552 left: 1616318537

我应该使用哪种参数?

1 个答案:

答案 0 :(得分:0)

最终解决我问题的方法是设置:

uwsgi.ini

http-timeout = 1200
socket-timeout = 1200

nginx_site.conf

proxy_read_timeout 1200;
proxy_send_timeout 1200;
client_header_timeout 1200;
client_body_timeout 1200;
uwsgi_read_timeout 20m;

在遇到类似的大文件(> 1Gb)问题后,我从github issuestackoverflow thread以及更多其他信息中收集了更多信息。最终发生的事情是python / uwsgi花了太长时间来处理大文件,而nginx停止监听uwsgi导致504错误。因此,增加http和套接字通信的超时时间最终解决了它。