sanic和tornado的简单性能测试
操作系统 : CentOS7.3.1611_x64
Python 版本 : 3.6.8
tornado版本:6.0.2
sanic版本:19.9.0
CPU : Intel(R) Core(TM) i5-2320 CPU @ 3.00GHz 4核
之前一直使用tornado作为http相关python程序的框架,最近查资料发现新出的sanic性能很高,这里在同样硬件条件下使用ab进行简单的压测。
准备工作
安装apache ab工具:
yum -y install httpd-tools
压测命令:
ab -c 30 -n 100000 http://127.0.0.1:9093/
参数说明:
-c :模拟并发数
-n : 总请求数
对比测试
使用tornado实现的简单http服务器代码:
https://github.com/mike-zhang/pyExamples/blob/master/httpRelate/httpServer/tornadoTest1.py
使用sanic实现的简单http服务器代码:
https://github.com/mike-zhang/pyExamples/blob/master/httpRelate/httpServer/sanicTest1.py
tornado测试结果:
Server Software: TornadoServer/6.0.2
Server Hostname: 127.0.0.1
Server Port: 9093 Document Path: /
Document Length: 12 bytes Concurrency Level: 30
Time taken for tests: 82.282 seconds
Complete requests: 100000
Failed requests: 0
Write errors: 0
Total transferred: 20700000 bytes
HTML transferred: 1200000 bytes
Requests per second: 1215.33 [#/sec] (mean)
Time per request: 24.685 [ms] (mean)
Time per request: 0.823 [ms] (mean, across all concurrent requests)
Transfer rate: 245.68 [Kbytes/sec] received Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.2 0 8
Processing: 1 25 10.3 25 74
Waiting: 1 24 10.3 25 74
Total: 1 25 10.3 25 74 Percentage of the requests served within a certain time (ms)
50% 25
66% 30
75% 33
80% 34
90% 37
95% 39
98% 41
99% 42
100% 74 (longest request)
sanic测试结果:
Server Software:
Server Hostname: 127.0.0.1
Server Port: 9093 Document Path: /
Document Length: 12 bytes Concurrency Level: 30
Time taken for tests: 20.164 seconds
Complete requests: 100000
Failed requests: 0
Write errors: 0
Total transferred: 11100000 bytes
HTML transferred: 1200000 bytes
Requests per second: 4959.29 [#/sec] (mean)
Time per request: 6.049 [ms] (mean)
Time per request: 0.202 [ms] (mean, across all concurrent requests)
Transfer rate: 537.58 [Kbytes/sec] received Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 2 0.5 2 11
Processing: 1 4 1.5 4 38
Waiting: 0 4 1.4 3 37
Total: 1 6 1.5 6 41 Percentage of the requests served within a certain time (ms)
50% 6
66% 6
75% 7
80% 7
90% 7
95% 8
98% 9
99% 10
100% 41 (longest request)
从测试结果可以看到,开启两个进程情况下:
tornado的cps是 1215.33 ,平均响应时间是 24.685 ms
sanic的cps是 4959.29 ,平均响应时间是 6.049 ms
修改并发数后的测试数据如下:

测试结果对比如下:


从测试数据来看,sanic的cps比tornado高,平均响应时间方面,sanic也比tornado短。
本文github地址:
https://github.com/mike-zhang/mikeBlogEssays/blob/master/2019/20191102_sanic和tornado的简单性能测试.rst
欢迎补充
sanic和tornado的简单性能测试的更多相关文章
- snaic和tornado的简单性能测试
操作系统 : CentOS7.3.1611_x64 Python 版本 : 3.6.8 tornado版本:6.0.2 snaic版本:19.9.0 CPU : Intel(R) Core(TM) i ...
- Greenplum 简单性能测试与分析
如今,多样的交易模式以及大众消费观念的改变使得数据库应用领域不断扩大,现代的大型分布式应用系统的数据膨胀也对数据库的海量数据处理能力和并行处理能力提出了更高的要求,如何在数据呈现海量扩张的同时提高处理 ...
- Mininet实验 设置带宽之简单性能测试
原文:设置带宽之简单性能测试 这个实验主要还是说明通过python程序来设定Mininet中的链路带宽. 目的: Python脚本实现自定义拓扑 设置链路的带宽.延迟及丢包率 iperf测试主机间的带 ...
- .Net core2.0日志组件Log4net、Nlog简单性能测试
.Net core之Log4net.Nlog简单性能测试 比较log4net.nlog的文件写入性能(.netcore环境),涉及代码和配置如有不正确的地方,还请批评指正. 原创,转载请著名出处:ht ...
- JMeter简单性能测试(适合初学者)
利用JMeter进行Web测试 JMeter介绍 脚本录制 运行JMeter进行测试 JMeter主要组件介绍 参数化设置 动态数据关联 使用命令行运行JM ...
- 将Flask应用程序部署在nginx,tornado的简单方法
来自:http://www.xuebuyuan.com/618750.html 在网上搜索了一下部署flask应用的方法,大部分是用wsgi部署在nginx上面,部署了很久,都没有成功,可能是我领悟能 ...
- ClickHouse之简单性能测试
前面的文章ClickHouse之初步认识已经简单的介绍了ClickHouse,接下来进行简单的性能测试.测试数据来源于美国民用航班的数据,从1987年到2017年,有1.7亿条. 环境: centos ...
- LevelDB和ForestDB简单性能测试(含代码)
测试环境简单说明 Windows下测试 硬件环境如下: 处理器:Intel(R) Core(TM) i5-4460 CPU @ 3.20GHz 内 存:8GB 硬 盘:希捷 ST1000DM003 操 ...
- 框架之Tornado(简单介绍)
引言 回想Django的部署方式 以Django为代表的python web应用部署时采用wsgi协议与服务器对接(被服务器托管),而这类服务器通常都是基于多线程的,也就是说每一个网络请求服务器都会有 ...
- python web框架之Tornado的简单使用
python web框架有很多,比如常用的有django,flask等.今天主要介绍Tornado ,Tornado是一个用Python写的相对简单的.不设障碍的Web服务器架构,用以处理上万的同时的 ...
随机推荐
- P1825 诡异的题
一道不难的题,可是挑了好久也没调好!因为最开始写的代码太复杂了,一大堆嵌套括号,其中有一个ny写成了nx一直没发现.后来用新定义变量取代了那些复杂的用函数."."和方括号表达出来的 ...
- freeswitch查看所有通道变量
概述 freeswitch 是一款好用的开源软交换平台. 实际应用中,我们经常需要对fs中的通道变量操作,包括设置和获取,set & get. 但是,fs中有众多的内部定义通道变量,也有外部传 ...
- Linux 系统安全加固经验总结
本文为博主原创,转载请注明出处: 目录 1. 禁止root密码登录 2. linux 用户密钥复杂度及有效期设置 3. 检查sudo权限 4.关闭ftp 5.设置文件的属主并指定读写执行权限 6.管 ...
- Object.defineProperty()实现双向数据绑定
<div id="app"> <input type="text" name="txt" id="txt&quo ...
- spring--Bean的作用域及应用场景
这六种Spring Bean的作用域适用于不同的应用场景: Singleton: 在Spring IoC容器中仅存在一个Bean实例,Bean以单例方式存在.无论我们是否在配置文件中显式定义,所有的S ...
- 使用Spring Data JPA实现审计功能,记录创建人、创建时间、最后修改时间和最后修改人
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...
- 【C++】为什么含有纯虚函数的类无法定义对象
纯虚函数的地址为空,无法分配内存,纯虚成员函数对类是没有意义的,失去了普通类的数据和方法绑定于同一对象中的意义,因此无法构造对象,只能由其派生类继承这些成员函数并实现,才能构造派生类对象. 纯虚成员函 ...
- 虚拟化平台IO劣化分析
虚拟化平台IO劣化分析 背景 最近同事让帮忙做几个虚拟机进行性能测试. 本来应该搭建CentOS/Winodws平台进行相关的测试工作. 但是为了环境一致性, 使用了ESXi6.7 进行虚拟化 然后这 ...
- 【转帖】基于官方rpm包方式安装Oracle19c
https://blog.whsir.com/post-5489.html 本文基于Centos7.x环境,通过官方提供的rpm包来安装19c 1.下载Oracle19c安装包 https://w ...
- 【遇到一个神奇的问题】暂未想到原因,http.Post 传入 nil参数正确,但是传输值为 nil 的 *bytes.BytesReader 就 `invalid memory address or nil pointer dereference`
出错的代码如下: func getEab(ctx context.Context, credentialsJSON string, old *externalAccountKeyResp) (*ext ...