1.带server2.0装饰器

接口访问数据库查询

并发100 平均每秒处理11.8次请求 平均响应时间6944ms

接口不做任何处理

并发100 平均每秒处理99.9次请求 平均响应时间3ms

并发500 平均每秒处理467.9次请求 平均响应时间4ms

并发1000 平均每秒处理936.8次请求 平均响应时间6ms

再提高并发 并不能再提高处理速度了

小法目前接口

并发100 平均每秒处理11次请求 平均响应时间6647ms

2.接口不使用任何装饰器

接口不做任何处理

并发100 平均每秒处理100.2次请求 平均响应时间3ms

并发1000 平均每秒处理949.2次请求 平均响应时间4ms

并发2000 平均每秒处理1500.4次请求 平均响应时间16ms

接口访问数据库

并发100 平均每秒处理16.2次请求 平均响应时间4086ms

小结

加server2.0装饰器后出错率上升,不加装饰器运行稳定。

并发数主要限制于数据库的访问速度。

server2.0并没有提高并发

3.使用异步装饰器

接口不做任何处理

@gen.coroutine

并发1500 平均每秒处理1296.5次请求 平均响应时间8ms

使用异步访问数据库

并发100 平均每秒处理96.1次请求 平均响应时间39ms

from elasticsearch_async import AsyncElasticsearch
es = AsyncElasticsearch(
hosts = [
"117.78.26.××:××××",
"117.78.26.××:××××"
],
type = "es",
http_auth = ("×××××","×××××"),
timeout = 60
)
@web.asynchronous
@gen.engine
def post(self, *args, **kwargs):
result = {'code': 200, 'msg': '返回成功','data':{}}
body = {"size": 10, "_source": ["id","name"],
"query":
{"bool": {"must": [
{"match":{"name":{"query":"婚姻法"}}},
{"match": {"law_type": {"query": "法律"}}},
]}}}
laws = yield self.es.search("law_search_v2","_doc",body)
# laws = "测试"
result['data']['laws'] = laws
self.finish(result)

并发600 平均每秒处理550次请求 平均响应时间75ms

再增加并发请求数量并发量反而会降低

总结

异步请求数据库稳定性好,速度快,并发量大

目前数据库异步支持

es : elasticsearch-async 支持es6.0

mongodb : motor

mysql : tornado_mysql

接口访问使用tornado.httpclient.AsyncHTTPClient

4.不同异步方式之间的区别

使用@gen.coroutine

代码难度大

使用ThreadPoolExecutor

便与开发

tornado并发性能测试的更多相关文章

  1. asyncio与gevent并发性能测试

    asyncio与gevent并发性能测试 在对网站进行扫描或者暴破时需要对网站进行高并发操作,然而requests+concurrent多线程性能上不太理想,了解到python用得比较多的并发库有as ...

  2. ORM增删改查并发性能测试

    这两天在对一些ORM进行性能测试(涉及SqlSugar.FreeSql.Fast.Framework.Dapper.LiteSql),测试用的是Winform程序,别人第一眼看到我的程序,说,你这测试 ...

  3. ORM增删改查并发性能测试2

    前言 上一篇<ORM增删改查并发性能测试>出现了点小失误,有的输出SQL日志的代码没有禁用,数据库连接字符串可能有问题.统一环境,统一代码后,重新写一篇. 这次重点是并发性能测试,真不是为 ...

  4. jmeter如何玩之badboy + jmeter并发性能测试

    今天下班时公司安排了一个同事来对项目做集群性能测试,怀着对性能测试的好奇心,下班后没有着急离开,而是等待 那位同事的到来,然后在旁边学习了下如何使用Badboy和jmeter做性能测试. 1. 软件介 ...

  5. python tornado异步性能测试

    测试两个接口 # -*- coding:utf-8 -*- import time import tornado.web import tornado.gen import tornado.ioloo ...

  6. 30行代码搞定WCF并发性能测试

    [以下只是个人观点,欢迎交流] 30行代码搞定WCF并发性能 轻量级测试. 1. 调用并发测试接口 static void Main()         {               List< ...

  7. 如何使用jMeter对某个OData服务进行高并发性能测试

    For project reason I have to measure the performance of OData service being accessed parallelly. And ...

  8. 简单好用的TCP/UDP高并发性能测试工具

    工具下载地址: 链接:https://pan.baidu.com/s/1fJ6Kz-mfFu_RANrgKqYiyA 提取码:0pyf 最近测试智能设备的远程的性能,思路主要是通过UDP对IP和端口发 ...

  9. jmeter性能测试-高并发分布式部署

    jmeter什么要做分布式部署? jmeter是运行在JVM虚拟机上的,当模拟大量并发时,对运行机器的性能/网络负载会很大. 此时就需要使用jmeter的分布式部署功能,实现多台被控机器同时并发访问被 ...

随机推荐

  1. screen命令使用简单说明

    首先用screen [-S]命令建立一个session,然后就可以在这个session中建立多个window了.使用screen [-S]可以建立多个session,而每个session又可以建立多个 ...

  2. Spring Boot:实现MyBatis分页

    综合概述 想必大家都有过这样的体验,在使用Mybatis时,最头痛的就是写分页了,需要先写一个查询count的select语句,然后再写一个真正分页查询的语句,当查询条件多了之后,会发现真的不想花双倍 ...

  3. Git 本地仓库(使用小乌龟进行操作,一个人开发)

    一.首先在本地创建版本库 创建成功最明显的特征是该目录下存在一个隐藏文件夹(.git) 前提:已设置显示隐藏文件 三种方式: 1.Git GUI Here(右击) 2.Git Bash Here(右击 ...

  4. thinkphp5ajax分頁&&搜索後分頁

    //控制器層 //分頁 public function list_january_table(){ //設置當前頁 $page = input("post.page") ? inp ...

  5. vi,etc目录文件,环境变量,别名功能

      1 vi命令使用技巧补充 1.1 如何快速编辑文本内容 yy ---快速复制文件内容 3yy ---复制三行内容 p ---快速粘贴文本内容 3p ---粘贴三行内容 dd ---快速删除文件内容 ...

  6. Centos6 samba服务配置

    1.在阿里虚拟机中配置包源  在ecs的 /etc/yum.repos.d 创建个 alios.repo,内容如下 [alios.$releasever.base.$basearch] name=al ...

  7. Zookeeper_ACL

    getAcl path 查看某个node的权限 设置权限1 world方式 setAcl <path> world:anyone:<acl>例如 setAcl /node1 w ...

  8. 编译gd库出错

    不知道大家有没有遇到在  X64 RedHat5 或者 RedHat4 下.编译安装PHP环境的时候. 安装了libxml,zlib,jpeg,libpng,freetype,libart_lgpl, ...

  9. 32| 无实例无真相:基于LoadRunner实现企业级服务器端性能测试的实践(上)

  10. (持续更新)Qt3D 学习资源

    目录 一.前言 1.1 什么是Qt3D 1.2 Qt3D 的利与弊 利:原生支持 弊处:资料过少 二.学习建议 2.1 OpenGL 学习资料 2.2 Qt3D 资料 2.2.1 视频资料 2.2.4 ...