uwsgi部署到nginx出现invalid request block size: 4161 (max 4096)

 

使用Flask制作一个网页平台之后,登陆使用openid登陆,然后使用uwsgi服务部署到nginx上,运行起来没有什么问题,但是偶尔在登陆的时候出现502的错误,一般登陆成功之后后面的任何操作都不会出错。

查看uwsgi的log之后,发现出现这样的一个错误:

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

问题原因:默认的uwsgi分配一个小的buffer(4k)来接收每个请求的头信息,如果在日志中看见"invalid request block size",它意味着你需要一个大一点的buffer

搜索一下,其实问题很简单:url地址长度超过了4096个字符,而4096就是uwsgi配置中buffer-size的默认值,所以只需要将buffer-size改大一点即可。

我是使用uwsgi -x 指定uwsgi配置文件来启动服务器的,所以只需要修改成以下方式启动即可:

uwsgi -x platform.uwsgi.xml --buffer-size 32768

修改办法,可以给uwsgi启动命令家参数:

在CODE上查看代码片派生到我的代码片

uwsgi -b 8192   

或者修改uwsgi启动配置文件,比如uwsgi.ini添加以下配置:

在CODE上查看代码片派生到我的代码片
buffer-size  = 8192 

问题基本就解决了,至于为什么这个问题是偶尔出现?那是因为openid登陆的时候会携带一个参数叫next_url,这个地址是用来指定登陆成功之后返回到哪里地址,如果这个next_url太长就会导致url地址超过4096,有时候next_url=/,即网站根地址,url地址长度就不会超过4096。另外还和openid返回的登陆人信息长度有关系,导致有些人从来不会出现这个错误,有些人偶尔出现这个问题。

时间: 2024-10-25 14:09:00

uwsgi部署到nginx出现invalid request block size: 4161 (max 4096)的相关文章

oracle数据库ORA-15196: invalid ASM block header [kfc.c:26076] [hard_kfbh]问题

这是某个网友的数据库,11g ASM环境. 其中ASM元数据出现损坏,导致DiskGroup无法mount.不过比较万幸的存储有镜像.即使是这样,据说存储工程师恢复也花了1天多,对于我们的业务系统来讲,这是不可接受的. 我这里将该数据库case的信息贴出来,供大家参考!(备注:我们提供完善的数据库各种解决方案,详情请看:云和恩墨) WARNING: cache read  a corrupt block: group=3(DATAVG) dsk=27 blk=1 disk=27 (DATAVG_

django-在用uwsgi部署Django应用时报错

问题描述 在用uwsgi部署Django应用时报错 配置文件如下: [uwsgi] http-socket = 0.0.0.0:8080 chdir = /root/yigo_runtime/app virtualenv = /root/yigo_runtime/python env = DJANGO_SETTINGS_MODULE=yigo_runtime.settings static-map = /static=/root/yigo_runtime/app/static module =

【XCode】Xcode7.2(7C68)下Swift基于SpriteKit出现Invalid Request: requesting subtype without specifying idiom

出现的问题 运行的时候,控制台首先会提示 : calling -display has no effect. 之后在创建SKLabelNode的过程中,出现了 CUICatalog: Invalid Request: requesting subtype without specifying idiom 之后就是 Received memory warning. 最后出现 Message from debugger: Terminated due to memory issue 程序退出 排查原

nginx安装报错:nginx: [error] invalid PID number

搞了一个美国服务器,重新弄了下nginx安装配置,重新/usr/local/nginx/sbin/nginx -s reload 提示如下报错: [root@Kvmla-201606291067 conf]# /usr/local/nginx/sbin/nginx   -s reload nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid" 无效的pid号. 网上搜索资料解

在Oracle9i中使用多种Block Size

oracle Oracle9i为Oracle数据库引擎带来了一些令人吃惊的复杂性.它推出了许多新的内部特性,包括bitmap free lists,基于redo log的复制,动态SGA,还有一个可能是最重要的特性,可以支持多种块大小(Block Size). 当你忽略全部的高级特性时,Oracle的工作就是传送数据,磁盘的I/O管理和调整对于任何的Oracle数据库都是一个重要的部分.任何可以令磁盘I/O减少的工作都对Oracle数据库系统有一个正面的影响. 如果我们查看一下各种各样调整Ora

【BBED】使用bbed解决 the amount of space used is not equal to block size

学习bbed的过程中,修改了file# 4,block 396之后遇到kdbchk: the amount of space used is not equal to block size错误 注意:应该在关闭数据库模式下进行bbed的操作. oracle@localhost.localdomain:/home/oracle/backup>dbv file=/opt/oracle/oradata/orcl/users01.dbf  blocksize=8192 DBVERIFY: Release

测量block size 为8K ,自动分配的本地管理表空间的位图block一位能管理多少空间

从oracle8i起,oracle推出了本地管理表空间的来代替数据字典管理的表空间,数据字典管理表空间是用uet$,fet$这两个表来管理的,它们现在依然存在于数据库中,不过不起任何作用. SQL> select count(*) from uet$;   COUNT(*) ----------          0 SQL> select count(*) from fet$;   COUNT(*) ----------          0 下面来探究自动分配的本地管理表空间中一个bit

Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程_python

具体环境: Ubuntu 14.04 Python 2.7.6 Django 1.7.1 Virtualenv name:test Nginx uwsgi 假设 项目文件夹位于 /data/www/ts 设置保存在 ./conf 复制代码 代码如下: virtualenv name = test domain name = example.com django+uwsgi的部署实在是太蛋疼了..网上已有的教程似乎有新版本的兼容问题.最后跑到uwsgi官网上找的教程终于跑通了.. 不过官网的教程似

NGINX+UWSGI部署生产的DJANGO代码

并且NGINX不用ROOT帐户哟. 1,编译安装NGINX及UWSGI及DJANGO,不表述 2,将NGINX文件夹更改为普通用户拥有.但执行文件NGINX仍为ROOT,运行如下命令加入特殊权限标志位,并将NGINX.CONF的USER设置普通用户及组(空格隔开): ? 1 chmod u+x nginx 3,在NGINX里配置UWSGI的PROXY ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 upstream p_host {