gunicorn 几种 worker class 性能测试比较

Gunicorn, 一个支持WSGI协议的web服务器
Flask, 一个轻量级的python web框架
Gunicorn目前自带支持几种工作方式:sync (默认值)
eventlet
gevent
tornado
测试环境准备
python 2.7+
redis-server 2.8.4
压力测试工具ab
代码及相关python包准备 创建虚一个新的虚拟环境并安装需要的包
$ mkvirtualenv test
$ workon test$ cat requirements.txt
gunicorn==19.3.0
flask==0.10.1
flask-redis==0.1.0
gevent==1.0.2
tornado==4.2
eventlet==0.17.4$ pip install -r requirements.txt
测试程序app.py:::python
from flask import Flask
from flask_redis import FlaskRedisREDIS_URL = "redis://:password-string@localhost:6379/0"
app = Flask(__name__)
app.config.from_object(__name__)redis = FlaskRedis(app, True)@app.route("/")
def index():redis.incr("hit", 1)return redis.get("hit")if __name__ == '__main__':app.run()
开始测试
使用ab工具,并行500个客户端, 发送50000次请求$ ab -c 500 -t 30 -r "http://127.0.0.1:8000/"
分别使用四种方式启动使用服务, 并开启4个worker$ gunicorn -w 4 app:app --error-logfile - --worker-class sync
$ gunicorn -w 4 app:app --error-logfile - --worker-class gevent
$ gunicorn -w 4 app:app --error-logfile - --worker-class tornado
$ gunicorn -w 4 app:app --error-logfile - --worker-class eventlet
结果比较Worker class	Time taken for tests	Complete requests	Failed requests	Requests per second	用户平均请求等待时间	服务器平均处理时间	最小连接时间	平均连接时间	50%的连接时间	最大连接时间
sync	37.363 s	49928	793	1336.29	374.169 ms	0.748 ms	5 ms	75 ms	17 ms	31746 ms
tornado	13.995	50000	543	3572.64	139.953 ms	0.280 ms	6 ms	110 ms	24 ms	13837 ms
eventlet	8.156	50000	0	6130.74	81.556	0.163 ms	2 ms	80 ms	62 ms	3153 ms
gevent	7.647 s	50000	0	6538.23	76.473 ms	0.153 ms	1 ms	74 ms	52 ms	1122 ms
从测试结果来看,默认自带sync效率很低,并且在测试时发现,采用sync方式在高并发时 会出现woker重启的情况, 如下:[2015-06-25 11:31:06 +0000] [27040] [CRITICAL] WORKER TIMEOUT (pid:27064)
[2015-06-25 11:31:06 +0000] [27040] [CRITICAL] WORKER TIMEOUT (pid:27051)
[2015-06-25 11:31:06 +0000] [27040] [CRITICAL] WORKER TIMEOUT (pid:27045)
[2015-06-25 11:31:06 +0000] [27040] [CRITICAL] WORKER TIMEOUT (pid:27046)
[2015-06-25 11:31:06 +0000] [27064] [INFO] Worker exiting (pid: 27064)
[2015-06-25 11:31:06 +0000] [27051] [INFO] Worker exiting (pid: 27051)
[2015-06-25 11:31:06 +0000] [27045] [INFO] Worker exiting (pid: 27045)
[2015-06-25 11:31:06 +0000] [27046] [INFO] Worker exiting (pid: 27046)
[2015-06-25 11:31:06 +0000] [27263] [INFO] Booting worker with pid: 27263
[2015-06-25 11:31:06 +0000] [27264] [INFO] Booting worker with pid: 27264
[2015-06-25 11:31:06 +0000] [27277] [INFO] Booting worker with pid: 27277
[2015-06-25 11:31:06 +0000] [27280] [INFO] Booting worker with pid: 27280
eventlet 和gevent两种方式效果最好,数据基本差不多.

文章作者 crazygit

转载于:https://www.cnblogs.com/morgana/p/10881479.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/462557.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《孙子兵法》【作战第二】

原文:1.孙子曰:凡用兵之法,驰车千驷,革车千乘,带甲十万,千里馈粮,则内外之费,宾客之用,胶漆之材,车甲之奉,日费千金,然后十…

linux下ftp服务器的搭建

http://www.cublog.cn/u3/93926/showart_1874130.htmlRHEL4中ftp服务器的搭建首先修改配置文件使主机获得永久ip地址# vi /etc/sysconfig/network-scripts/ifcfg-eth0DEVICEeth0BOOTPROTOstaticIPADDR172.16.16.111NETMASK255.255.0.0GATEWAY172.16.16.1ONBOOTyesTYPEEthernet重…

原来MySQl就是这样工作的

一、MySQL简单介绍MySQL是当今最流行的开源数据库管理系统,超过10亿的下载量足可以证明这点。MySQL以其速度、高可靠性、简单易用,广泛应用,一些大型企业也在逐渐应用,如:Facebook、维基百科等网站。MySQL最早由瑞典的MySQL AB公司…

window 快捷键使用 + idear 编辑器使用

window 快捷键 Art tab : 应用程序切换 Win D : 桌面(当前桌面显示或隐藏) Win M : 所有程序最小化 Ctrl 空格 / Ctrl shift : 中英文切换 Ctrl W : 关闭当前窗口 Ctrl W / Ctrl f4 : 关闭大年标签或弹出的窗口 Win ↓ : 当前窗口最小化 Win ↑ : 当前窗口最大化 …

Flex builder3与eclipse整合 转载

一.首先下载安装Eclipse 3.3 解压到 D:/Program Files/eclipse 到算安装成功了. 二.下载安装Flex Builder 3.0 http://trials.adobe.com/Applications/Flex/FlexBuilder/3/FB3_WWEJ_Plugin.exe1. 指定 Flex Builder 3.0 安装路径为D:/Program Files/eclipse/Flex Builder,进下一…

Jackson动态处理返回字段

有时候业务需要动态返回字段&#xff0c;比如&#xff0c; 场景一&#xff1a;返回 name , birthday, createDate 场景二&#xff1a;返回name, birthday, age 现做个备忘录&#xff0c;以便参考。 下面是引入的POM <dependency> <groupId>com.fasterxml.jackso…

技术规划应该写成什么样?

最近总是接触到规划文档的评审。有自己写的&#xff0c;也有看别人写的&#xff0c;还有帮人出谋划策的。 这些规划的题目大概如:公司的未来语言规划、公共资源管理规划、工业化开发规划等等。但凡规划&#xff0c;大概是一件事&#xff0c;要预先考虑到3年&#xff0c;甚至5年…

jBPM4工作流开发实战 之 第五部分 其他知识

jBPM的异步执行介绍jBPM对于所有的流程执行操作默认都是同步的。也就是说&#xff0c;默认是一个活动执行完成后&#xff0c;再执行另一个活动。 如&#xff0c;Task1->Java1->Java2->Task2&#xff0c;在同步的状态下执行&#xff0c;即使Java1活动要耗时一个小时&am…

Java生成二进制文件与Postman以二进制流的形式发送请求

业务描述&#xff1a; 模拟终端&#xff08;智能家居&#xff09;发送HTTP POST请求&#xff0c;请求参数为二进制流&#xff1b;而且&#xff0c;二进制流是加密后的数据&#xff0c;因此调试分两步&#xff1a; 1、Java代码生成加密后数据&#xff0c;并保存为二进制流文件 &…

Linux下判断cpu物理个数,几核,是超线程还是多核心

原文地址&#xff1a;http://hi.baidu.com/xolee/blog/item/2bedc8b7ef2743e730add16c.html 1. 查看物理CPU的个数#cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l 2. 查看逻辑CPU的个数#cat /proc/cpuinfo |grep "processor"|wc -l 3. 查看CPU是…

Linux文件夹权限如何更改?

http://hi.baidu.com/lwvs/blog/item/83245809a30f033de9248835.html 先来了解一下文件属性&#xff0c;在shell环境里输入&#xff1a;ls -l 可以查看当前目录文件。如&#xff1a;drwxr-xr-x 2 nsf users 1024 12-10 17:37 下载文件备份分别对应的是&#xff1a;文件属性 连…

电脑上面玩Android 游戏(.apk文件)

Android模拟器, 下载地址 http://files.cnblogs.com/jx270/BlueStacks-SplitInstaller_native.rar 下载完毕后解压&#xff0c;双击安装, 然后自己去下一些.apk文件&#xff0c;双击即可在电脑上面使用 ps自己配一个手柄,玩游戏不错,

以太网MAC地址

M AC地址有48位&#xff0c;但它通常被表示为12位的点分十六进制数。MAC地址全球唯一&#xff0c;由IEEE对这些地址进行管理和分配。每个地址由两部分组成&#xff0c;分别是供应商代码和序列号。其中前24位二进制代表该供应商代码。剩下的24位由厂商自己分配。 如果48位全是1&…

JQuery最佳实践

作者&#xff1a; 阮一峰 日期&#xff1a; 2011年8月 4日 上周&#xff0c;我整理了《jQuery设计思想》。 那篇文章是一篇入门教程&#xff0c;从设计思想的角度&#xff0c;讲解"怎么使用jQuery"。今天的文章则是更进一步&#xff0c;讲解"如何用好jQuery&quo…

Extracting Text From Image

Microsoft Office Document Imaging 虚拟打印机http://www.codeproject.com/Articles/10130/OCR-with-Microsoft-OfficeExtracting Text From ImageThe following program shows you how to extract text from image. For this youll have add reference (under COM tab) of &q…

Linux平台gcc和动态共享库的基础知识

http://www.javaeye.com/topic/261176 对大多数不从事Linux平台C语言开发的人来说&#xff0c;GNU gcc的一套工具和Linux平台的共享库的使用还是十分陌生的&#xff0c;其实我也不太熟悉&#xff0c;姑且写点基础知识&#xff0c;权当做备忘吧。 一、GNU gcc的编译工具用法 我们…

Excel-在整个工作簿中查找/替换

13、在整个工作簿中查找/替换 调范围为&#xff1a;工作簿&#xff0c;默认是工作表&#xff1b; 转载于:https://www.cnblogs.com/Formulate0303/p/10885194.html

WCF服务实例激活类型编程与开发(转)

【引言】&#xff1a; 在WCF分布式开发必备知识(2):.Net Remoting这 篇文章里我已经介绍过了Net Remoting相关的概念&#xff0c;其中也包括Net Remoting的激活方式&#xff1a;SingleTon模式、SingleCall模式、客户端激活方式。其实WCF服务的激活方式也与此相似。服务激活方式…

UltraEdit中显示空格与回车的问题

原网址&#xff1a;http://blog.sina.com.cn/s/blog_4983ea900100ikot.html ue中如何显示空格及行结尾呢&#xff1f; 视图-->显示空格/制表符and显示行结尾 空格显示为: “”————实际上&#xff0c;有时候是_&#xff0c;有时候是全角的制表符显示为: “&…

DAT模块简介

转自&#xff1a;http://blog.sina.com.cn/s/blog_48fc29af0100ncdu.html DAT模块函数在DM642的EDMA操作中用于搬运数据。DAT_busy()函数用于检测EDMA数据传输过程是否已经结束&#xff0c;定义如下&#xff1a;Uint32 DAT_busy(Uint32 ID); DAT_busy()函数如果返回一个非零值&…