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

2024-05-11

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

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

在偶然发现大文件(> 1Gb)的类似问题后,我收集了更多信息github问题 https://github.com/unbit/uwsgi/issues/1623 and 堆栈溢出线程 https://stackoverflow.com/questions/24127601/uwsgi-request-timeout-in-python还有其他几个。最终发生的情况是 python / uwsgi 处理大文件花费的时间太长,并且 nginx 停止监听 uwsgi 导致 504 错误。因此增加http和socket通信的超时时间最终解决了这个问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐