You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gunicorn+Nginx+Django环境下视频上传卡在40-45%,报net::ERR_CONNECTION_CLOSED

大文件上传报错net::ERR_CONNECTION_CLOSED的排查与解决

针对你在Gunicorn+Nginx+Django环境上传385MB视频时卡在40%-45%并出现net::ERR_CONNECTION_CLOSED的问题,可从以下几个方向排查:

1. 调整Gunicorn超时配置

Gunicorn默认超时时间较短(通常30秒),大文件上传需要更长的处理时间。修改Gunicorn启动参数或配置文件:

  • 启动命令添加:--timeout 1200(与Nginx的proxy_read_timeout保持一致)
  • 若使用配置文件(如gunicorn.conf.py),添加:
    timeout = 1200
    

2. 优化Nginx配置细节

你的Nginx配置中部分参数存在不合理之处,同时需验证权限:

  • 降低client_body_buffer_size:当前设置4096M过大,易引发内存问题,建议调整为256M或128M
  • 检查client_body_temp_path权限:确保Nginx运行用户(如www-data、nginx)对/home/mrlonely/lumendjango/media目录拥有读写权限,执行命令调整:
    chown -R www-data:www-data /home/mrlonely/lumendjango/media
    
  • 补充proxy_send_timeout:在location /块中添加proxy_send_timeout 1200;,与读取超时保持一致

3. 检查Django上传限制

Django默认对上传文件大小和内存占用有限制,需修改settings.py:

  • 调整内存上传阈值:
    # 设置为400MB(根据文件大小调整)
    DATA_UPLOAD_MAX_MEMORY_SIZE = 419430400
    FILE_UPLOAD_MAX_MEMORY_SIZE = 419430400
    # 若想让所有文件直接写入磁盘,可设置为0
    # FILE_UPLOAD_MAX_MEMORY_SIZE = 0
    
  • 验证临时目录权限:确保FILE_UPLOAD_TEMP_DIR(若配置)存在且Django进程有读写权限,默认使用系统临时目录(如/tmp),需保证该目录空间充足

4. 系统层面限制排查

  • 文件描述符限制:Linux默认文件描述符数量可能不足,临时调整执行:
    ulimit -n 65535
    
    永久调整需编辑/etc/security/limits.conf,添加:
    nginx soft nofile 65535
    nginx hard nofile 65535
    {gunicorn运行用户} soft nofile 65535
    {gunicorn运行用户} hard nofile 65535
    
  • 磁盘空间:执行df -h检查/home/mrlonely/lumendjango/media所在磁盘的剩余空间,确保至少有500MB以上可用
  • 防火墙/安全组:检查iptables、firewalld等是否存在中断长连接的规则,调整TCP连接超时时间

5. 日志定位问题

  • 查看Nginx错误日志:通常路径为/var/log/nginx/error.log,查找上传过程中的权限、超时或资源不足错误
  • 查看Gunicorn日志:启动时指定日志文件,如:
    gunicorn --access-logfile gunicorn_access.log --error-logfile gunicorn_error.log ...
    
  • 查看Django日志:在settings.py中配置LOGGING模块,捕获上传过程中的异常信息

内容的提问来源于stack exchange,提问作者MrLonely

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 16:46:09