我在皇帝模式下运行 uwsgi
uwsgi --emperor /path/to/vassals/ --buffer-size=32768
得到这个错误
invalid request block size: 21327 (max 4096)...skip
怎么办? 我也试了 -b 32768。
-b 32768
我试图在 nginx 下运行它时遇到了同样的问题 文件 给你。需要注意的是,一旦切换到 nginx,必须确保不是在 --socket参数指定的端口上访问应用程序,而是在 nginx.conf 中的“ listen”端口上访问。虽然你的问题被描述的不同,标题完全符合我的问题。
--socket
我也遇到了同样的问题,而遵循一些教程。 问题是我设置了选项 socket = 0.0.0.0:8000而不是 http = 0.0.0.0:8000。 socket选项用于某些第三方路由器(例如 nginx) ,而当设置 http选项时,uwsgi 可以接受传入的 HTTP 请求并自行路由它们。
socket = 0.0.0.0:8000
http = 0.0.0.0:8000
socket
http
我可以修复它添加 --protocol=http到 uwsgi。
--protocol=http
正确的解决方案是不切换到 HTTP 协议。您只需要增加 uWSGI 设置中的缓冲区大小。
buffer-size=32768
或处于命令行模式:
引自官方文件:
默认情况下,uWSGI 为每个请求的头部分配一个非常小的缓冲区(4096字节)。如果您开始在日志中接收“无效请求块大小”,这可能意味着您需要更大的缓冲区。使用缓冲区大小选项将其增加(最多增加到65535)。 如果您在日志中收到‘21573’作为请求块大小,这可能意味着您正在使用 HTTP 协议与使用 uwsgi 协议的实例进行通信。别这样。
默认情况下,uWSGI 为每个请求的头部分配一个非常小的缓冲区(4096字节)。如果您开始在日志中接收“无效请求块大小”,这可能意味着您需要更大的缓冲区。使用缓冲区大小选项将其增加(最多增加到65535)。
如果您在日志中收到‘21573’作为请求块大小,这可能意味着您正在使用 HTTP 协议与使用 uwsgi 协议的实例进行通信。别这样。
从这里: https://uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html
当 uWSGI 服务器使用 uwsgi协议并试图通过 curl或 Web 浏览器直接通过 http协议访问它时,将显示此错误。如果可以,请尝试将 uWSGI 服务器配置为使用 http协议,这样您就可以通过 Web 浏览器或 curl 访问它。
uwsgi
curl
如果您不能(或不想)更改它,可以在本地或远程 uWSGI 服务器前使用反向代理(例如 nginx) ,请参阅 https://uwsgi-docs.readthedocs.org/en/latest/Nginx.html
nginx
如果感觉工作量太大,可以试试 uwsgi-tools python 软件包:
uwsgi-tools
$ pip install uwsgi-tools $ uwsgi_curl 10.0.0.1:3030
如果你需要通过网页浏览器等访问你的应用程序,还有一个简单的反向代理服务器 uwsgi_proxy。见更多扩展答案 https://stackoverflow.com/a/32893520/179581
uwsgi_proxy
正如文件中的另一条评论所指出的:
如果您正在使用 Nginx,那么如果您有这样的配置(或者类似的奇怪配置) ,就会发生这种情况:
proxy_pass http://unix:/path/to/socket.sock
这是对 uWSGI 使用 HTTP (这使得它变得暴躁)。相反,使用:
uwsgi_pass unix:/path/to/socket.sock;
我也有同样的问题 所以我做了..。 使用 UWSGI + DJANGO + NGINX + REACT +
1-nano/etc/uwsgi/site/app _ plataform. ini [ uwsgi ]
DJANGO _ SETTING _ MODULE = app _ plataform.setingenv = DJANGO _ SETTING _ MODULE setings.configure () Chdir =/home/app _ plataform home =/root/app _ plataform Module = prometheus _ plataform. wsgi: application Master = true process = 33 buffer-size = 32768 Socket =/home/app _ plataform/app _ plataform. sock Chmod-socket = 777真空 = 真
DJANGO _ SETTING _ MODULE = app _ plataform.setingenv = DJANGO _ SETTING _ MODULE setings.configure ()
Chdir =/home/app _ plataform home =/root/app _ plataform Module = prometheus _ plataform. wsgi: application
Master = true process = 33 buffer-size = 32768
Socket =/home/app _ plataform/app _ plataform. sock Chmod-socket = 777真空 = 真
2-对 nginx 进行严肃的性能升级... 用户 www-data;
Worker _ processauto; worker _ process4; pid/run/nginx.pid; include/etc/nginx/module-abled/* . conf; 事件{ worker _ links 4092; multi _ access on; } 更新配置 Client _ body _ buffer _ size 16K; Client _ max _ body _ size 32m; Client _ body _ timeout 12; client _ header _ timeout 12; keepalive _ timeout Send _ timeout 10; access _ log off; 基本设定 Sendfile on; tcp _ nopush on; tcp _ no ; # keepalive _ timeout 65; Type _ hash _ max _ size 2048; Server _ name _ hash _ bucket _ size 64; # server _ name _ in _ redirect off; Include/etc/nginx/ime.type; default _ type 应用程序/八位码流; SSL 设置 Ssl _ protocol TLSv1 TLSv1.1 TLSv1.2; # 删除 SSLv3,参考文献: POODLE 上的 ssl _ better _ server _ crypher; 日志设置 Access _ log/var/log/nginx/access.log; error _ log /var/log/nginx/error.log; # Gzip 设置 # Gzip _ comp _ level 2; gzip _ min _ length 1000; gzip _ proxied 过期的 no-cache no-store 私有授权; gzip _ types text/print Application/x-javascript text/xml text/css application/xml; 上; # gzip _ proxied any; # gzip _ comp _ level 6; gzip _ buffer 168k; Gzip _ http _ version 1.1; # gzip _ types text/plaintext/css Application/json application/javascript text/xml application/xml Application/xml + rss text/javascript; 虚拟主机配置 Include/etc/nginx/conc.d/< em > . conf; include /etc/nginx/sites- 启用/ ; }
事件{ worker _ links 4092; multi _ access on; }
更新配置
Client _ body _ buffer _ size 16K; Client _ max _ body _ size 32m;
Client _ body _ timeout 12; client _ header _ timeout 12; keepalive _ timeout Send _ timeout 10; access _ log off;
基本设定
Sendfile on; tcp _ nopush on; tcp _ no ; # keepalive _ timeout 65; Type _ hash _ max _ size 2048;
Server _ name _ hash _ bucket _ size 64; # server _ name _ in _ redirect off;
Include/etc/nginx/ime.type; default _ type 应用程序/八位码流;
SSL 设置
Ssl _ protocol TLSv1 TLSv1.1 TLSv1.2; # 删除 SSLv3,参考文献: POODLE 上的 ssl _ better _ server _ crypher;
日志设置
Access _ log/var/log/nginx/access.log; error _ log /var/log/nginx/error.log;
# Gzip 设置 #
Gzip _ comp _ level 2; gzip _ min _ length 1000; gzip _ proxied 过期的 no-cache no-store 私有授权; gzip _ types text/print Application/x-javascript text/xml text/css application/xml; 上;
# gzip _ proxied any; # gzip _ comp _ level 6; gzip _ buffer 168k; Gzip _ http _ version 1.1; # gzip _ types text/plaintext/css Application/json application/javascript text/xml application/xml Application/xml + rss text/javascript;
虚拟主机配置
Include/etc/nginx/conc.d/< em > . conf; include /etc/nginx/sites- 启用/ ; }
然后... 重新启动服务或 reebot 服务器..。
Systemctl 重新启动 uwsgi & systemctl 重新启动 nginx
可以在 uWSGI 设置中增加缓冲区大小。
最快的解决方案是,从浏览器中删除该 URL 的 Cookie。
在浏览器中打开开发人员工具 > 转到应用程序选项卡和 > 删除与 URL 关联的 Cookie。