文章内容

2023/5/26 15:59:15,作 者: 黄兵

invalid request block size: 6774 (max 4096)...skip

再使用 uWSGI + nginx 的时候,url 中包含非常长的请求字符串的时候,服务器出现 502 Bad Gateway 的错误。

才开始调整 nginx 的缓冲区大小,具体调整如下:

proxy_buffers 8 256k;
proxy_buffer_size 128k;

重启 nginx 但是问题还是没有解决。

同时查看 nginx 日志当中,有大量的错误,错误内容为:

[error] 2039373#2039373: *72073670 recv() failed (104: Connection reset by peer) while reading response header from upstream

错误截图如下:


出现这个错误的原因是:

表示在从上游服务器读取响应头时,上游服务器提前关闭了连接。
这可能是上游 uWSGI 的问题,登录上游服务器查看具体错误日志:

May 26 15:39:48 VM-4-9-ubuntu uwsgi[2582838]: invalid request block size: 6774 (max 4096)...skip
May 26 15:39:49 VM-4-9-ubuntu uwsgi[2582838]: invalid request block size: 4246 (max 4096)...skip
May 26 15:39:51 VM-4-9-ubuntu uwsgi[2582835]: invalid request block size: 6774 (max 4096)...skip
May 26 15:39:51 VM-4-9-ubuntu uwsgi[2582835]: invalid request block size: 4246 (max 4096)...skip
May 26 15:41:01 VM-4-9-ubuntu uwsgi[2582839]: invalid request block size: 6774 (max 4096)...skip
May 26 15:41:01 VM-4-9-ubuntu uwsgi[2582839]: invalid request block size: 4246 (max 4096)...skip

同时查询了官网,对于这个问题给出了解释:

By default uWSGI allocates a very small buffer (4096 bytes) for the headers of each request. If you start receiving “invalid request block size” in your logs, it could mean you need a bigger buffer. Increase it (up to 65535) with the buffer-size option.

翻译:默认情况下,uWSGI 为每个请求的标头分配一个非常小的缓冲区(4096 字节)。 如果您开始在日志中收到“无效的请求块大小”,则可能意味着您需要更大的缓冲区。 使用缓冲区大小选项增加它(最多 65535)。

出现了很多这个错误,查询了一下错误原因:

是由于 uWSGI 的默认缓冲区太小,需要更改缓冲区大小。

解决方案:

修改 uWSGI 的配置文件,增加如下内容:

buffer-size=32768

再次重启 uWSGI 服务,问题解决。


参考资料:

1、uwsgi invalid request block size

2、Things to know (best practices and “issues”) READ IT !!!

3、ChatGPT


    其它相关推荐:

1、Nginx 配置文件 nginx.conf 详解

2、Nginx 支持HTTP/2

3、Flask+Gunicorn+Nginx安装

4、Nginx 多上游服务器问题

5、[已解决]运行gunicorn失败:[ERROR] Connection in use 127.0.0.1 8080


黄兵个人博客原创。

转载请注明出处:黄兵个人博客 - invalid request block size: 6774 (max 4096)...skip

分享到:

发表评论

评论列表