文章内容
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
其它相关推荐:
5、[已解决]运行gunicorn失败:[ERROR] Connection in use 127.0.0.1 8080
黄兵个人博客原创。
转载请注明出处:黄兵个人博客 - invalid request block size: 6774 (max 4096)...skip
Invalid leading whitespace, reserved character(s), or returncharacter(s) in header value
评论列表