threaded模式下,比prefork模式要省资源
分类: 系统运维
最近用django开发了一套广告投放系统,这套系统其实是一套网络广告联盟系统,包括广告的投放、管理、统计、防作弊、跟踪等等。硬件是一台 DELL的PC Server(双核Xeon1个,2G内存),操作系统是redhat as4,其他的还有nginx 0.5.33,python 2.5,mysql 5.0.41,django是10月份左右从svn trunk取下来的。
开始的时候系统运行在apache + mod_python下,后来因为负荷的问题,改成了nginx + fastcgi +django的模式。其中django fastcgi运行在prefork模式下,maxchildren=10,nginx通过tcp socket连接fastcgi进程。一段时间内,系统跑的都不错,load average一直在1以下,当时整个系统的广告点击、显示大概在300w/day。
很快流量上去了,几个大站一加入联盟,系统负荷立刻上去了,不算静态文件,差不多达到2000w/day。更要命的是,频频出现502 Gateway Error。尝试着增加maxchildren,但是因为这台机器内存不太大,只有2G,其中一小半分给了mysql,还有一部分统计、分析程序也跑在这 个服务器上,maxchildren也不能加的太大。被逼急了,把django fastcgi切换到threaded模式,并且调整了一些参数,居然撑住了!以下是一点小结:
1、django fastcgi运行在threaded模式下,比prefork模式要省资源
2、以前盛传threaded模式不稳定,但是现在已经有所好转。详情可以看http://www.pkblogs.com/timchen119/2007/06/thread-dying-problem-may-fixed-in.html
3、django fastcgi模式下maxchildren参数决定了你的服务能同时处理多少个请求(nginx处理的静态文件除外)。如果请求数超过了maxchildren的设置,就可能出现502错误。maxchildren的缺省值是50
4、打开nginx的status模块,可以监控nginx的一些状态,比如:
Active connections: 5620
server accepts handled requests
882256 882256 1300056
Reading: 35 Writing: 133 Waiting: 5452
Active
connections指当前的活动连接数,这个数应该等于第四行的三个数之和。第四行的三个数中,Reading表示正在从客户端读取数据的链接数
目,Writing表示正在向客户端返回数据的链接数目,Waiting通常是因为KeepAlive,处于等待下个请求的链接数目。
Reading+Writing的数目=dajngo处理的请求+nginx处理的静态文件请求。可以根据Reading+Writing来设置
maxchildren数目。
5、如果django运行在threaded模式下,并且负荷很高,只起一个fastcgi进程可能是不够
的,一是可能不稳定,二是GIL的限制。因此,可能需要起多个运行在threaded模式的fastcgi进程。我现在临时的做法是用一个nginx虚拟
主机做反向代理,后面是多组nginx+django threaded fastcgi。回头可以考虑调整一下。
6、nginx通过unix socket和fastcgi通信,比tcp socket要高效,重负荷下可以考虑。
关于prefork和threaded模式,最近有些新的想法,请参考http://blog.csdn.net/FeiSan/archive/2008/01/23/2061208.aspx
threaded模式下,比prefork模式要省资源的更多相关文章
- Objective-C 工厂模式(下) -- 抽象工厂模式
相比简单工厂模式, 只有一个工厂 能生产的手机也是固定的 抽象工厂模式类似于有很多家工厂, 当用户要买什么手机就创建对应的工厂去生产 比如用户要买iPhone就创建一个Apple工厂来生产手机, 要买 ...
- Apache的prefork模式和worker模式(转)
prefork模式这个多路处理模块(MPM)实现了一个非线程型的.预派生的web服务器,它的工作方式类似于Apache 1.3.它适合于没有线程安全库,需要避免线程兼容性问题的系统.它是要求将每个请求 ...
- Apache的prefork模式和worker模式
prefork模式这个多路处理模块(MPM)实现了一个非线程型的.预派生的web服务器,它的工作方式类似于Apache 1.3.它适合于没有线程安全库,需要避免线程兼容性问题的系统.它是要求将每个请求 ...
- ASM:《X86汇编语言-从实模式到保护模式》第14章:保护模式下的特权保护和任务概述
★PART1:32位保护模式下任务的隔离和特权级保护 这一章是全书的重点之一,这一张必须要理解特权级(包括CPL,RPL和DPL的含义)是什么,调用门的使用,还有LDT和TSS的工作原理(15章着重 ...
- 16位模式/32位模式下PUSH指令探究——《x86汇编语言:从实模式到保护模式》读书笔记16
一.Intel 32 位处理器的工作模式 如上图所示,Intel 32 位处理器有3种工作模式. (1)实模式:工作方式相当于一个8086 (2)保护模式:提供支持多任务环境的工作方式,建立保护机制 ...
- 微软Azure 经典模式下创建内部负载均衡(ILB)
微软Azure 经典模式下创建内部负载均衡(ILB) 使用之前一定要注意自己的Azure的模式,老版的为cloud service模式,新版为ARM模式(资源组模式) 本文适用于cloud servi ...
- 苹果手机Safari无痕浏览模式下系统登录成功但是页面不跳转
昨天下午,测试提了一个bug,问题是:在苹果手机Safari无痕浏览模式下系统登录成功但是页面不跳转. 思前想后找了半天没思路,后来经过同事的点拨,说可能是禁用了cookie之类的,反正我也没思路就顺 ...
- win10 下visual studio 2015 在调试模式下不能跟踪源文件
win10 下visual studio 2015 在调试模式下不能跟踪源文件,只要一调试就会关闭(隐藏)打开的文档,非常不方便.经过一番折腾,发现是配置的问题. 如果安装多个版本的VS,请删除对应版 ...
- 转:IE兼容模式下 SCRIPT1028: 缺少标识符、字符串或数字
IE兼容模式下 SCRIPT1028: 缺少标识符.字符串或数字例如下面一段代码 var a = { x: 1, y: 2,};alert(a.x);如果在IE的兼容性视图(IE7文档模式 ...
随机推荐
- 最新13个加速 Web 开发的框架和工具
我们为开发人员挑选了15个最新的Web开发框架,你肯定尝试一下这些新鲜的框架,有的可能略微复杂,有的提供了很多的配置选项,也有一些窗口小部件和界面交互的选择.他们将帮助你创建更优秀的网站,提供给用户更 ...
- 8款强大的CSS3/HTML5动画及应用源码
1.CSS3 jQuery UI控制滑杆插件 今天我们要来分享一款基于CSS3和jQuery UI的控制滑杆插件,这款控制滑杆是在HTML5滑杆元素的基础上进行自定义CSS3渲染,所以外观更加漂亮.另 ...
- 利用二维矩阵求spanning tree
只做了9个节点的,无权值,使用了n-1个=8个循环,非常麻烦.一级一级判断是否连接,连接及记录所在节点,以后不再使用,确保无回路. 验证后无回路,但只试过几种情况. 代码如下: #include< ...
- 3月3日(6) Climbing Stairs
原题 Climbing Stairs 求斐波那契数列的第N项,开始想用通项公式求解,其实一个O(n)就搞定了. class Solution { public: int climbStairs(int ...
- DataGridView导入导出excel
DataGridView导出到Excel #region 方法一 DateGridView导出到csv格式的Excel /// <summary> /// 导出数据到Excel.常用方法, ...
- Oracle数据库的创建、数据导入导出
如何结合Sql脚本和PL/SQL Developer工具来实现创建表空间.创建数据库.备份数据库.还原数据库等操作,然后实现Oracle对象创建.导入数据等操作,方便我们快速了解.创建所需要的部署Sq ...
- iOS内存管理retain,assign,copy,strong,weak
转自:http://www.cnblogs.com/nonato/archive/2013/11/28/3447162.html iOS的对象都继承于NSObject, 该对象有一个方法:retain ...
- ORA-14404
OS: Oracle Linux Server release 5.7 DB: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - ...
- 10大iOS开发者最喜爱的类库
该10大iOS开发者最喜爱的库由“iOS辅导团队”成员Marcelo Fabri组织投票选举而得,参与者包括开发者团队,iOS辅导团队以及行业嘉宾.每个团队都要根据以下规则选出五个最好的库:1)不能投 ...
- html笔记 仅适用于个人
如何使图片与文本框上下对齐 其实就给<img>加一个属性 align="absmiddle" <form method="post" acti ...