Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File upload nginx和uwsgi超大文件上载(>;3Gb)_File Upload_Nginx_Upload_Uwsgi - Fatal编程技术网

File upload nginx和uwsgi超大文件上载(>;3Gb)

File upload nginx和uwsgi超大文件上载(>;3Gb),file-upload,nginx,upload,uwsgi,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

也许有人知道该怎么做。我正在尝试上载大于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

我应该使用哪个参数

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

uwsgi.ini

http-timeout = 1200
socket-timeout = 1200
nginx\u site.conf

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


在遇到一个类似的大文件(>1Gb)问题后,我从和其他几个地方收集了更多的信息。最终的结果是python/uwsgi处理大文件的时间太长,nginx停止侦听uwsgi导致504错误。因此,增加http和套接字通信的超时时间最终解决了这一问题。

在定期上传大文件时,尽量避免后端处理:文章不错,但我不能使用这种方法,因为我需要上传到服务器,例如照片。然后我必须将这张照片传递给uwsgi进行转换(例如,从gif到png)。我需要对上传的文件进行操作,这是一个问题,要进一步传递请求,您可以使用proxy\u pass指令,该指令在文件上传到文件系统后调用。临时文件名可以通过Nginx变量访问。好的,翻译:我用“client\u body\u in\u file\u”尝试了这个方法,但没有成功。首先,我的nginx将上传的整个文件保存到/tmp/0000042(3.6GB)。然后,我的后端(uwsgi)开始将该文件复制到/tmp/0000043,复制过程长达60秒。计算机无法在60秒内完全复制所有文件,只有2.1 Gb。最后在浏览器中,我发现“504网关超时”错误。您找到解决方案了吗?