uwsgi_read_timeout超时处理
来源:互联网 发布:ubuntu 14 启动mysql 编辑:程序博客网 时间:2024/05/29 18:55
http://www.cnblogs.com/zhuangzebo/p/3847673.html
最近发现一服务器一个奇怪的现象:
Django的视图函数在浏览器一个请求的情况下,竟然做了两个请求的函数处理。不可思议,找了几天也不知道为什么,
只发现只要用uwsgi_read_timeout之后,如果请求时间超时,Nginx acess log便会记两条同样的log。uwsgi_read_timeout
指令的含义是如果视图函数处理的时间超时,uwsgi便会关闭连接,这个关闭只是针对Nginx这边的关闭,视图函数还会继续执
行,处理完成后,视图函数那边会报IO写入错误[不了解的人可以去看看《TCP详解》,关于TCP全双工和半双工]。
一个请求怎么会有两个处理呢?最后找了问题所在,以下是简单的nginx配置片段:
uwsgi_connect_timeout 15;uwsgi_write_timeout 8;uwsgi_read_timeout 8;upstream up_app { server unix:/var/run/socket.sock; server 127.0.0.1:9001 backup; }server { ... location / { inclue uwsgi_param; uwsgi_pass up_app; } ...}
如果Django 函数视图超过8sec,超时关闭连接,并半请求再次转到backup进程。只要是upstream server超时关闭连接,
请求便会转到backup进程,从而导致一个请求两个处理。
那么怎么解决呢,我只要一个请求一个处理,超时就返回504即可。答案就在这里uwsgi_next_upstream。在nginx配置中
加入uwsgi_next_upstream error即可,原默认为uwsgi_next_upstream error timeout,即只要超时便会将请求转给下一个server.
问题到此结束!
0 0
- uwsgi_read_timeout超时处理
- 反应式处理超时事件
- NIO的超时处理
- jQuery - ajax超时处理
- HttpURLConnection超时处理
- J2MESocket超时处理
- 处理异步调用超时
- 线程超时处理Demo
- UDP超时处理
- JAVA处理线程超时
- C#超时处理
- nginx的超时处理
- Android网络超时处理
- HessianKit 超时处理
- 测试超时处理
- secureCRT超时处理
- WebView的超时处理
- php session超时处理
- 最大子段和
- 【iOS开发系列】KVC&KVO
- Ubuntu-安装-搜狗输入法-详细教程
- jQuery插件和JavaScript库
- 使用 Appium 进行多设备的集群分布式 UI 自动化测试
- uwsgi_read_timeout超时处理
- java序列化1[实现Serializable接口]
- 定义窄字符串,变形为宽字符串
- QScrollArea 自动完成滚动条的功能
- 基于nginx和ffmpeg搭建HLS流媒体服务器
- 2012年5月SAT香港真题解析
- 知识点随笔
- 自已动手写ORM框架(2)——学前班
- 机器视觉——IC芯片字符检测打光实例