`

django的几种运行方法性能对比

 
阅读更多

转自:http://irobot.blog.hexun.com/20332312_d.html

 

 

 

 

转自:http://blog.opensource.org.cn/hdcola/2007/10/django-1.html

我现在手上有以下几种django的情行:

  • django自带web server
  • django+lighttpd+fastcgi+threaded
  • django+lighttpd+fastcgi+prefork
  • django+lighttpd+scgi+threaded 
    &S226; django+lighttpd+scgi+prefork

我对这几个完全没感觉。不知道的情况下会认为fastcgi更快更稳定,scgi可能都没听说过,而自带的应该很灵活,但是应该性能上完全不行的。 
真实的情况呢?用数据来说话罢:

所有的测试均为我的笔记本,这里测试的环境都一样。 
OS:OS X 10.4.10 
CPU:2.16GHz Intel Core Duo 
RAM:2G 667MHz SDRAM 
lighttpd:lighttpd @1.4.18_0+darwin_8 
python:python25 @2.5.1_1+darwin_8 
django:0.97-pre-SVN-unknown

测试工具:apache ab 
测试压力:50个并发、连续5000次访问

测试服务器内容:就是一个url请求,echo出Hello World。

使用django的自带server: 
Concurrency Level: 50 
Time taken for tests: 8.511 seconds 
Complete requests: 5000 
Failed requests: 122 
(Connect: 70, Length: 52, Exceptions: 0) 
Broken pipe errors: 0 
Total transferred: 759220 bytes 
HTML transferred: 103530 bytes 
Requests per second: 587.48 [#/sec] (mean) 
Time per request: 85.11 [ms] (mean) 
Time per request: 1.70 [ms] (mean, across all concurrent requests) 
Transfer rate: 89.20 [Kbytes/sec] received

它在连接访问的末期在控制台上报出了许多exception。每秒587次的处理能力还是相当不错的,不过稳定性不好还是需要大家仔细考虑的。

再来看看lighttpd+fastcgi+threaded的结果: 
Concurrency Level: 50 
Time taken for tests: 8.447 seconds 
Complete requests: 5000 
Failed requests: 1 
(Connect: 0, Length: 1, Exceptions: 0) 
Broken pipe errors: 0 
Total transferred: 862279 bytes 
HTML transferred: 104979 bytes 
Requests per second: 591.93 [#/sec] (mean) 
Time per request: 84.47 [ms] (mean) 
Time per request: 1.69 [ms] (mean, across all concurrent requests) 
Transfer rate: 102.08 [Kbytes/sec] received 
哈哈,处理能力明显比django自己的server要好。不过在最后一次也出现了问题,更讨厌的是它在出现问题后就死悄悄了,必需重启lighttpd和django才能缓过来。稳定第一,这样的稳定问题还是不能让我容忍的!

是不是lighttpd+fastcgi+prefork方式会稳定的多呢?来看看: 
Concurrency Level: 50 
Time taken for tests: 57.002 seconds 
Complete requests: 5000 
Failed requests: 5000 
(Connect: 5000, Length: 0, Exceptions: 0) 
Broken pipe errors: 0 
Total transferred: 0 bytes 
HTML transferred: 0 bytes 
Requests per second: 87.72 [#/sec] (mean) 
Time per request: 570.02 [ms] (mean) 
Time per request: 11.40 [ms] (mean, across all concurrent requests) 
Transfer rate: 0.00 [Kbytes/sec] received 
真的没有错误了。不过让人无法忍受!感觉就一个字:“慢!”每秒87次的处理能力能让人杀了我!虽然稳定。。。但是看着大片大片的cpu空着,感觉对不起我这PP的BB哟。

大将出场!牛B的scgi来了,lighttpd+scgi+threaded强强联合: 
Concurrency Level: 50 
Time taken for tests: 6.202 seconds 
Complete requests: 5000 
Failed requests: 0 
Broken pipe errors: 0 
Total transferred: 934460 bytes 
HTML transferred: 105000 bytes 
Requests per second: 806.19 [#/sec] (mean) 
Time per request: 62.02 [ms] (mean) 
Time per request: 1.24 [ms] (mean, across all concurrent requests) 
Transfer rate: 150.67 [Kbytes/sec] received 
这才是真正牛B的每秒806次处理,而且没有问题,而且cpu很稳当。爽就一个字!

是不是scgi在prefork方式下也很强呢?来看看lighttpd+scgi+prefork的成绩: 
Concurrency Level: 50 
Time taken for tests: 56.730 seconds 
Complete requests: 5000 
Failed requests: 5000 
(Connect: 5000, Length: 0, Exceptions: 0) 
Broken pipe errors: 0 
Total transferred: 0 bytes 
HTML transferred: 0 bytes 
Requests per second: 88.14 [#/sec] (mean) 
Time per request: 567.30 [ms] (mean) 
Time per request: 11.35 [ms] (mean, across all concurrent requests) 
Transfer rate: 0.00 [Kbytes/sec] received 
山口再次吹来了凉风,只能用“凄惨”来形容。又是一个稳定而无任何性能而言的成绩。

看了这些数字,总结一下: 
1.django服务器的prefork是稳定第一,但是显然不如thread状态下的速度快 
2.thread处理速度是快,但是到一个临界状态后出错哪可是一踏里糊涂呀 
3.scgi比fcgi的简洁不是盖的,对于cpu的消耗就是小,而且实现比较稳定

后话: 
除了django自己的server外,其它的模式如果你改了程序,就需要kill -HUP django启动的cgi服务。在开发时还是使用django自己的server罢。但是在生产环境中重启server还是有点不爽。 :)

分享到:
评论

相关推荐

    基于python的基于混沌系统敏感文本信息加密算法研究(django).zip

    6. **实验结果**:展示实际运行的结果,可能包括加密文本的示例,以及与传统加密方法的比较。 在“数据库”文件中,可能包含了项目的数据库模型设计和数据存储的相关代码。而在“程序”文件中,可能包含了整个项目...

    django-testing:Django测试的测试实用程序

    5. **Fixture**: Django支持 fixture,这是一种数据持久化的方法,可以用来预填充测试数据库。开发者可以创建JSON或XML格式的fixture文件,然后在测试中加载。 现在,关于"django-testing"项目,虽然没有提供详细...

    关于Django ForeignKey 反向查询中filter和_set的效率对比详解

    在进行反向查询时,Django提供了两种主要的方法: 1. **通过`_set`属性**:当我们在`Questions`模型中查询与之关联的所有`Answers`时,可以直接使用`question.answers_set.all()`。`_set`是Django自动为`ForeignKey...

    osf-openstack-training-master.zip

    ##项目说明 本项目主要用于开源力量《OpenStack应用实战解析及开发...###OpenStack云平台与其它几种云平台的比较 几种主流的开源云平台技术比较 几种主流云平台的生态系统比较 ###国内外OpenStack云计算的案例和现状

    python 2019毕业论文参考文献.docx

    - **详细内容**:文章总结了几种有效的教学方法,如案例驱动教学法、项目导向学习法等,并分享了一些具体的课堂实践案例。这对于提高学生编程兴趣和技能有很大帮助。 #### Python语言的中文文本处理 - **知识点...

    动态语言Python探讨与比较.zip

    5. 与动态版本的Java(如Jython)比较:Jython让Python代码可以运行在Java平台上,利用Java的库和性能,但Python的语法和社区资源更丰富。 6. 与动态版本的C++(如IronPython)比较:IronPython使Python代码能利用...

    基于python的手写数字识别系统源码数据库.docx

    因为所使用的开发工具和技术(如Python语言、Django框架、MySQL数据库等)都是开源免费的,而且系统运行所需的硬件资源也比较有限,这使得项目的总体投入相对较小。 2. **技术可行性**:从技术角度来看,当前的技术...

    The Hacker's Guide to Scaling Python_Julien Danjou

    Python作为一种编程语言,通常被认为在性能上不是最快的,但这并不意味着不能通过合适的方法来扩展Python应用以处理大量的并发请求。 作者Julien Danjou在OpenStack项目中工作多年,积累了丰富的经验。他发现,即使...

    hysia:一种快速识别web应用程序的方法(Web Application Detector)

    在讨论Web应用指纹特征识别方法的同时,本篇内容还探讨了如何快速筛选识别规则,并且对比了WAD项目与国外类似项目的异同,以及这种识别的意义。 首先,Web应用的指纹特征识别方法通常涉及以下几个方面: - Header...

    Python和C#优劣势对比共2页.pdf.zip

    然而,Python在性能和并发处理方面相对较弱,因为它是一种解释型语言,执行效率低于编译型语言,如C#。 C#,由微软开发,主要用于.NET框架,广泛应用于企业级应用和游戏开发。其优势在于: 1. **高性能**:C#是...

    The Hacker's Guide to Python

    - **性能剖析**:介绍了几种常用的性能剖析工具和技术,帮助识别瓶颈并进行优化。 - **有序列表与bisect模块**:探讨了如何使用有序列表和bisect模块提高查找效率。 - **namedtuple与slots属性**:解释了namedtuple...

    CloudFeet

    1. **编程语言**:CloudFeet可能使用了Java、Python、JavaScript等主流编程语言中的某一种或几种,这取决于其目标平台和功能需求。源码分析可以帮助我们了解其架构设计和实现逻辑。 2. **框架与库**:在现代软件...

    CGI技术全面接触 (PDG).rar

    CGI(Common Gateway Interface,通用网关接口)是一种在Web服务器和动态生成内容的程序之间进行交互的标准协议。CGI技术允许服务器运行客户端提交的外部程序,并将这些程序的输出作为HTTP响应返回给用户,从而实现...

    Pro Python System Administration, 2nd Edition

    - **Python SNMP库**:本书推荐了几种Python SNMP库,如`pysnmp`,并详细讲解了如何使用这些库来实现SNMP请求/响应流程。 - **实例演示**:通过具体实例展示了如何使用Python脚本来收集网络设备的性能数据,如CPU...

    Python 图像相似度匹配 + Restful API,本科毕业设计程序

    这里主要涉及以下几个关键知识点: 1. **Python编程语言**:Python是这个项目的基础,它是一种高级编程语言,语法简洁,适合快速开发。在这个项目中,Python被用来编写各个功能模块,如图像处理、模型训练、API接口...

    后端开发-绩效管理系统-基于Python+PLpgSQL实现.zip

    在这个绩效管理系统中,后端开发者将搭建服务器架构,编写处理业务逻辑的代码,并与前端进行数据交互,确保系统的稳定运行。 Python是一种广泛应用的高级编程语言,因其简洁易读的语法和丰富的库资源而备受青睐。在...

    python3.8.2(最新版).rar

    5. **性能提升**: 在Python 3.8.2中,Python解释器的性能得到了进一步优化,包括更快的字典操作、更好的垃圾回收算法等,使得整体运行速度有所提升。 6. **标准库更新**: 标准库中的多个模块也进行了更新和增强,如...

    ASP网络开发技术,感兴趣的来下吧

    10. **现代Web框架的对比**:了解ASP的同时,也可以对比学习其他现代Web框架,如PHP的Laravel、Python的Django或Node.js的Express,这些框架提供了更多功能和更好的性能。 总之,ASP网络开发技术是一个涉及服务器端...

    超市管理系统说明资源来源网络以及部分开源社区、仅供参考与学习、项目不可商用、一切后果由使用者承担、若是侵权请联系删除

    超市管理系统是一种用于自动化管理超市日常运营的软件工具,它整合了库存管理、销售记录、采购订单、会员管理、财务报表等多个关键功能,旨在提高效率、减少人为错误,并为管理者提供实时的数据分析。在这个资源包中...

    python学习.7z

    描述中的信息比较简单,没有提供额外的细节,但我们可以通过标签和子文件名来推测其中可能涉及的知识点。 标签“web前端组件”提示我们,这个压缩包可能还与Web开发的前端部分有关,尽管主要标题提到了Python,但...

Global site tag (gtag.js) - Google Analytics