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. javaweb各种框架组合案例(二):maven+spring+springMVC+mybatis

    1.mybatis是比较新的半自动orm框架,效率也比较高,优点是sql语句的定制,管理与维护,包括优化,缺点是对开发人员的sql功底要求较高,如果比较复杂的查询,表与表之间的关系映射到对象与对象之间 ...

  2. 使用豆瓣的pip源安装python模块

    1.指定豆瓣pip源安装Django pip install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com ...

  3. windows pyspider WEB显示框太小解决方法

    环境:windows7 + chrome + pyspider 解决方法: WEB预览框过小的原因在于页面元素的css属性height被替换为60px: CSS文件所在地方:C:\Users\Admi ...

  4. 627.Swap Salary-(LeetCode之Database篇)

    问题描述 给出下面的表,名为salary. id name sex salary 1 A m 2500 2 B f 1500 3 C m 5500 4 D f 500 要求执行一个UPDATE语句,将 ...

  5. 小程序请求接口统一封装到一个js文件中

    在我们做小程序时,数据请求数据请求是避免不了的,然而我们用官方自带的请求方式,会给我们带来很多重复的工作,所以我就借鉴大神们的博客,写了一个简单的请求方式. 1.首先我们在utils中新建一个api. ...

  6. 手动搭建自己的nuget服务器及使用

    这篇文章的主要目的: 1.搭建自己的私有的nuget服务器 2.打包代码为nuget包 3.在其他项目中使用私有服务器上的nuget包 一. 搭建自己的nuget服务器 1. 创建一个空的ASP.NE ...

  7. ceph-fuse客户端问题排查流程

    本文讲述了ceph-fuse客户端问题排查基本流程:) 首先查看集群的整体情况 ceph -s 是否有osd挂掉,是否有pg非active ceph-fuse进程是否存在? ps -ef |grep ...

  8. C#简单的连接数据库

  9. navicat远程连接mysql10060

    navicat连接mysql时,出现2003-Can't connect to MySql server on '47.106.228.160'(10060"Unknow error&quo ...

  10. 【MM系列】SAP 采购订单的批量修改

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP 采购订单的批量修改   前言 ...