python web 并发 性能_Python Web Server的性能测试
因为换了nginx就不再使用mod_wsgi来跑web.py应用了,现在用的是gevent-wsgi,效果还不错。但还是想试试别的,比如传说中超级猛的meinheld什么的。
软硬件环境
硬件:
一台04年初购置的IBM X235服务器,CPU为Xeon 2.4G两颗,内存1G,100M网卡。
软件:
Ubuntu Server 10.04 LTS
Apache 2.2.14
Nginx 0.7.65
Python 2.6.5
web.py 0.37
mako 0.7.2
sqlalchemy 0.7.8
gevent 0.13.7
gunicorn 0.14.6
meinheld 0.4.15
测试代码
有五个版本,分别是:
最基本的WSGI helloworld
defapplication(environ, start_response):
status ='200 OK'
resp ="Hello world!"
resp_headers = [('Content-type','text/plain;charset=utf-8')]
start_response(status, resp_headers)
return[resp]
def application(environ, start_response):
status = '200 OK'
resp = "Hello world!"
resp_headers = [('Content-type','text/plain;charset=utf-8')]
start_response(status, resp_headers)
return [resp]
最基本的web.py your IP
classyourip:
defGET(self):
return"Your IP is : %s"% web.ctx.ip
class yourip:
def GET(self):
return "Your IP is : %s" % web.ctx.ip
加了mako模板的web.py
classonlymako(BaseHandler):
@expose("yourip")
defGET(self):
returndict(yourip=web.ctx.ip)
class onlymako(BaseHandler):
@expose("yourip")
def GET(self):
return dict(yourip=web.ctx.ip)
加了数据库的web.py
classonlydb:
defGET(self):
created = web.ctx.provider.once_access(web.ctx.ip)
return"You have logged : %s"% created
class onlydb:
def GET(self):
created = web.ctx.provider.once_access(web.ctx.ip)
return "You have logged : %s" % created
和同时加了数据库和mako模板的web.py —— 这也是最接近实际应用的情况
classmakodb(BaseHandler):
@expose("index")
defGET(self):
created = web.ctx.provider.once_access(web.ctx.ip)
returndict(created=created)
class makodb(BaseHandler):
@expose("index")
def GET(self):
created = web.ctx.provider.once_access(web.ctx.ip)
return dict(created=created)
测试目标
五种运行环境:
web.py的测试环境app.run
web.py+gevent-WSGI
gunicorn默认(sync)
gunicorn+gevent
gunicorn+meinheld
gunicorn使用 -w 4 参数,经实际比较过,这个参数并不能有效增加rps,但在高并发测试情况下可以在一定程度上减少失败率。
测试方式
ApacheBench 2.3(Ubuntu Desktop 12.04)
RPS测试参数为 -n 200 -c 22 测五次取rps平均值。
之所以用这样比较小的参数,是因为再高了,其中某些测试就通不过了。
测试结果
RPS测试WSGI helloworldWeb.py YourIPWeb.py+MakoWeb.py
+SQLAlchemy
(SQLite)Web.py+Mako
+SQLAlchemy
(SQLite)Web.py
+SQLAlchemy
(Postgresql)Web.py+Mako
+SQLAlchemy
(Postgresql)
Web.py app.run
无
130
93
75*
45*
59
40
web.py+gevent
无
422
130
82
54
74
53
gunicorn default
854
439
136
93
66
90
62
gunicorn+gevent
695
291
115
74
56
78
56
gunicorn+meinheld
3565
682
160
84
65
98
64
其中加了“*”的数字发生了数据库错误,仅供参考。
另外,用同样的参数测了一下Apache2处理静态文件的rps为:1780,nginx为:2951。
python web 并发 性能_Python Web Server的性能测试相关推荐
- python 模板引擎 对比_Python Web开发模板引擎优缺点总结
做 Web 开发少不了要与模板引擎打交道.我陆续也接触了 Python 的不少模板引擎,感觉可以总结一下了. 一.首先按照我的熟悉程度列一下: pyTenjin:我在开发 Doodle 和 91 外教 ...
- python web flask开发框架_Python Web 开发框架,Flask 与 Django那个更好
本文把 Flask 和 Django 做一个比对,因为我对这两个 Python Web 框架都有实际的开发经验.希望我可以帮助您选择学习哪个框架,因为学习一个框架可能会非常耗时 -- 当然也很有趣! ...
- python3并发性能_python几种并发实现方案的性能比较
python几种并发实现方案的性能比较 前言 1. 偶然看到Erlang vs. Stackless python: a first benchmark, 对Erlang和 Stackless Pyt ...
- python多线程并发写入_Python多线程并发的简单测试
之前也写了一些简单的Python程序,对于多线程的并发一直没有涉及,今天决定先突破一下,把这个部分的内容先快速的掌握,然后在这个基础上细化改进. 我的好友冰川擅长Python技术,所以就拿来主义,参考 ...
- python多进程并发代码_Python并发编程系列之多进程(multiprocessing)
1引言 本篇博文主要对Python中并发编程中的多进程相关内容展开详细介绍,Python进程主要在multiprocessing模块中,本博文以multiprocessing种Process类为中心, ...
- python 3.9 性能_Python 3.9 性能优化:更快的 list()、dict() 和 range() 等内置类型
原标题:Python 3.9 性能优化:更快的 list().dict() 和 range() 等内置类型 Python 的 3.9.0 版本正在开发中,计划在 2020-10-05发布final版本 ...
- python为什么不火_python web为什么不火
广告关闭 回望2020,你在技术之路上,有什么收获和成长么?对于未来,你有什么期待么?云+社区年度征文,各种定制好礼等你! 一.搭建环境与项目:平时习惯使用anconda来管理python包, 所以本 ...
- python开发小型数据库_python web开发之数据库ORM的 peewee库 动手学习实践笔记
背景 在web开发的时候,一些比较简单的小型系统其实也得ORM框架,显而易见其实开发速度上是提升很多,因为有必要学习一下对应的ORM库. 关于ORM一些说明 关于ORM(Object Relation ...
- python web开发基础_python web开发基本概念
参考了廖雪峰的Python博客. web请求顺序: 浏览器发送一个http请求 服务器收到请求后,生成一个html文档. 服务器将html文档作为http相应的body发送给浏览器 浏览器收到http ...
最新文章
- 服务器维护怎么联系抖音客服,如何联系抖音客服?
- jquery文本折叠
- 介绍一种导入文件夹中图片数据集的方法
- 科大星云诗社动态20210510
- nacos 配置中心和注册中心依赖后报错,提示 org.apache.http.impl.client.HttpClientBuilder 这个类找不到
- 懒人必备!只需一行代码,就能导入所有的Python库
- 盘点:最值得托付终身的星座
- 你可能从未听过的 Linux 发行版
- 安全也要“易”,谈NAC的硬件化
- python filter函数_python基础——filter函数
- jfinal中使用freemarker
- android4.0自定义锁屏总结【android锁屏研究一】
- SQL语法整理(五)-视图
- PS一键磨皮插件磨皮DR4.5中文增强版(PS CC 2014-2019),人像修图调色软件
- Docker 端口映射到宿主机后, 外网无法通过ip访问对应宿主机端口
- sort(()=>{return Math.random()-0.5)}乱序数组不准确
- 服务器flv文件播放不了,解决win2003服务器不能播放flv文件格式的问题
- mysql1041_mysql8 参考手册--错误代码1036、1041、1046
- 拼多多店铺流量解析:这些流量入口你必须了解!
- review代码从哪些角度_CodeReview正确的姿势是什么?
热门文章
- android触摸进度条,Android仿IOS ViewPager滑动进度条
- c语言extern_C语言中#if,#if defined ,#ifdef,extern的用法描述
- tomcat7 mysql 连接池_Tomcat7 新的数据库连接池Tomcat jdbc pool介绍和配置
- Visualization的学习笔记
- 手机端网页开发的两个重要设置
- Python3.x Numpy中的array数组_矩阵操作
- 常用的Opencv函数汇总(持续更新...)
- 模版 ----- 整数二分
- 无setup.exe情况下安装mysql5.7.28(win10)
- Java IO实战操作(二)