[error] [nginx+uwsgi] upstream prematurely closed connection while reading response header from upstream

upstream prematurely closed connection while reading response header from upstream, client: 10.16.151.131, server: localhost, request: "POST /hsvltnprjct/predict/ HTTP/1.1", upstream: "http://10.16.195.51:8080/hsvltnprjct/predict/", host: "api.web"

1.问题描述

通过postman调用django后端服务接口,返回如下页面,但是只是偶尔返回,有时正常响应

image-20200515114320571

查看nginx报错日志,如下:

image-20200515114412641

2.问题解决

通过网上百度各种方案,如下:

  1. 增加keepalive 30000; 无效
  2. 修改proxy_buffer_size参数,也无效
  3. 关闭proxi_buffering=off; 也无效

突然想到不一定是nginx的问题,是不是后端服务问题呢?

  1. 测试1:穿过nginx直接访问uwsgi启动的nginx服务,发现服务无响应的概率几乎60%。
  2. 测试2:直接通过python manage.py启动服务,访问服务发现一切正常

由上反映出问题不在nginx,在uwsgi,这样就好处理了

修改uwsgi配置文件,将buffer-size=32768改为3276800

buffer-size=3276800

重启服务,再次访问,服务回归正常。不容易,坑太多了

原文地址:https://www.cnblogs.com/ryxiong-blog/p/12894077.html