我在皇帝模式下运行 uwsgi
uwsgi --emperor /path/to/vassals/ --buffer-size=32768
并得到这个错误
invalid request block size: 21327 (max 4096)...skip
该怎么办??我也试过 -b 32768
我在皇帝模式下运行 uwsgi
uwsgi --emperor /path/to/vassals/ --buffer-size=32768
并得到这个错误
invalid request block size: 21327 (max 4096)...skip
该怎么办??我也试过 -b 32768
在学习一些教程时,我也遇到了同样的问题。问题是我设置了选项socket = 0.0.0.0:8000
而不是http = 0.0.0.0:8000
.
socket
选项旨在与某些第三方路由器(例如 nginx)一起使用,而当http
设置选项时,uwsgi 可以接受传入的 HTTP 请求并自行路由它们。
正确的解决方案是不要切换到 HTTP 协议。您只需要在 uWSGI 设置中增加缓冲区大小。
buffer-size=32768
或在命令行模式下:
-b 32768
引用官方文档:
默认情况下,uWSGI 为每个请求的头部分配一个非常小的缓冲区(4096 字节)。如果您开始在日志中收到“无效的请求块大小”,这可能意味着您需要更大的缓冲区。使用缓冲区大小选项增加它(最多 65535)。
如果您在日志中收到“21573”作为请求块大小,这可能意味着您正在使用 HTTP 协议与使用 uwsgi 协议的实例对话。不要这样做。
从这里:https ://uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html
我可以修复它添加 --protocol=http 到 uwsgi
我在尝试在 nginx 下运行它时遇到了同样的问题,并且正在关注此处的文档。需要注意的是,一旦你切换到 nginx,你必须确保你没有试图访问 --socket 参数指定的端口上的应用程序,而是 nginx.conf 中的“监听”端口。尽管您的问题描述不同,但标题与我遇到的问题完全匹配。
当 uWSGI 服务器正在使用uwsgi
协议并且尝试通过http
协议curl
或 Web 浏览器直接访问它时,会显示此错误。如果可以,请尝试将您的 uWSGI 服务器配置为使用http
协议,以便您可以通过 Web 浏览器或 curl 访问它。
如果您不能(或不想)更改它,您可以nginx
在本地或远程 uWSGI 服务器前使用反向代理(例如),请参阅https://uwsgi-docs.readthedocs.org/en/latest/Nginx .html
如果感觉工作量太大,请尝试使用uwsgi-tools
python 包:
$ pip install uwsgi-tools
$ uwsgi_curl 10.0.0.1:3030
uwsgi_proxy
如果您需要通过 Web 浏览器等访问您的应用程序,还有一个简单的反向代理服务器。查看更多扩展答案https://stackoverflow.com/a/32893520/179581
正如文档中的另一条评论所指出的:
如果您在日志中收到“21573”作为请求块大小,这可能意味着您正在使用 HTTP 协议与使用 uwsgi 协议的实例对话。不要这样做。
如果您使用的是 Nginx,如果您具有此配置(或类似的奇怪配置),则会发生这种情况:
proxy_pass http://unix:/path/to/socket.sock
这是在向 uWSGI 发送 HTTP(这让人很不爽)。相反,使用:
uwsgi_pass unix:/path/to/socket.sock;
男人我有同样的问题;所以我做到了……看看使用 UWSGI + DJANGO + NGINX + REACT +
1 - 纳米 /etc/uwsgi/sites/app_plataform.ini [uwsgi]
DJANGO_SETTINGS_MODULE = app_plataform.settings 环境 = DJANGO_SETTINGS_MODULE settings.configure()
chdir = /home/app_plataform 主页 = /root/app_plataform 模块 = prometheus_plataform.wsgi:application
主 = 真正的进程 = 33 缓冲区大小 = 32768
socket = /home/app_plataform/app_plataform.sock chmod-socket = 777 Vacuum = true
2 - 对 nginx ... 用户 www-data 进行严重的性能升级;
worker_processes 自动;worker_processes 4;pid /run/nginx.pid; 包括/etc/nginx/modules-enabled/*.conf;
事件 {worker_connections 4092; 多接受;}
http { ##升级配置
client_body_buffer_size 16K;client_header_buffer_size 16k;client_max_body_size 32m;#large_client_header_buffers 2 1k;
client_body_timeout 12;client_header_timeout 12;keepalive_timeout 15;发送超时 10;access_log 关闭;
## # 基本设置 ##
发送文件;tcp_nopush 开启;tcp_nodelay 开启;#keepalive_timeout 65; types_hash_max_size 2048; server_tokens 关闭;
server_names_hash_bucket_size 64;# server_name_in_redirect 关闭;
包括/etc/nginx/mime.types;default_type 应用程序/八位字节流;
## # SSL 设置 ##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;# 删除 SSLv3,参考:POODLE ssl_prefer_server_ciphers on;
## # 日志设置 ##
access_log /var/log/nginx/access.log; 错误日志/var/log/nginx/error.log;
## # Gzip 设置 ##
gzip打开;gzip_comp_level 2;gzip_min_length 1000;gzip_proxied
过期无缓存无存储私有身份验证;gzip_types text/plain application/x-javascript text/xml text/css application/xml;gzip_vary on;#gzip_proxied 任何;#gzip_comp_level 6;gzip_buffers 16 8k;gzip_http_version 1.1;#gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
## # 虚拟主机配置 ##
包括/etc/nginx/conf.d/.conf ;包括 /etc/nginx/sites-enabled/;}
3 - 然后...重新启动服务或 reebot 服务器...
systemctl 重启 uwsgi & systemctl 重启 nginx