解决 Django + Gunicorn + Nginx 的 ”upstream prematurely closed connection while reading response“ 问题

本文介绍了在Django应用中,使用Gunicorn和Nginx部署时遇到的'upstream prematurely closed connection while reading response'错误。通过分析日志,首先尝试调整Nginx的proxy超时配置,无效后,发现是Gunicorn的超时问题。通过在Supervisor中增加Gunicorn的超时配置,并重启Supervisor服务,成功解决了问题。
摘要由CSDN通过智能技术生成

背景:一个应用,使用 Django 开发。部署到生产环境,使用 Gunicorn 运行 Django 应用,使用 Nginx 做为前端入口。使用 Supervisor 控制 Gunicorn 服务。

现象

  • 在线生成一个报告,等待下载时,出现“后台出错“。
  • 在本地调试环境下,相同的代码,能报告能正常重生成并下载。

日志

从 Django 的应用后台日志,看不到任何问题。但是从 Nginx 的 access_error.log 可以看到以下错误:

*196220 upstream prematurely closed connection while reading response header from upstream, client: x.x.x., server: xxx.xxx.com, request: "POST /some_url_path/?keyword=some_keyword HTTP/1.1",

另外,从 gunicorn 的 log 可以看到以下错误:

[2022-12-31 10:14:18 +0800] [28748] [CRITICAL] WORKER TIMEOUT (pid:28760)

第一次尝试,修改 nginx 的 proxy 超时配置

先怀疑是不是 Nginx 超时了。
在 Nginx 的代理到后台 app 的配置中,增加以下 timeout 相关的内容:


                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值