并发测试

python web并发异步测试

妖精的绣舞 提交于 2019-12-11 18:24:41
import asyncio import aiohttp import time url_lst_failed=[] url_lst_successed=[] async def get_info(url): async with aiohttp.ClientSession() as session: async with session.get(url,timeout=10) as resp: if resp.status != 200: url_lst_failed.append(url) else: url_lst_successed.append(url) r = await resp.text() start = time.time() #创建一个循环 loop = asyncio.get_event_loop() #创建一个任务盒子tasks,包含了3个需要完成的任务 tasks =[get_info('http://127.0.0.1:5000/asyn/') for i in range(500)] #tasks接入loop中开始运行 loop.run_until_complete(asyncio.wait(tasks)) end = time.time() print(end-start) print(len(url_lst_successed)) 来源:

testng.xml 配置大全

可紊 提交于 2019-12-09 22:53:43
1.TestNG的运行方式如下: 1 With a testng.xml file 直接run as test suite 2 With ant 使用ant 3 From the command line 从命令行 4 IDE 直接在IDE中执行 在IDEA中直接运行的时候,需要说明的是:可以运行一个测试类,也可以单独运行一个测试的方法。 在IDEA里执行,只需要右键,点击 Run xxx 即可。 如果是在某一个方法的代码块里右键,出现的是 Run methodName ,即只运行当前的方法; 如果是在类的代码块里右键,出现的是 Run className ,即运行当前类中的所有Test方法; 也可以创建testng.xml,右键出现的 Run path/testng.xml ,即运行该配置文件中需要运行的方法。 2.TestNG常见的注解: 注解 描述 @DataProvider 为测试方法提供数据 @BeforeMethod 在每个测试方法 前 执行 @AfterMethod 在每个测试方法 后 执行 @BeforeClass 被注释的方法将在当前类的第一个测试方法调用前运行 @AfterClass 被注释的方法将在当前类的所有测试方法调用后运行 @BeforeGroups 被配置的方法将在列表中的 gourp前运行。这个方法保证在第一个属于这些组的测试方法调用前立即执行

testNG xml文件详解

流过昼夜 提交于 2019-12-09 22:52:35
网上看到一篇整理的非常详细的xml文件详解,分享一下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 3 <!--suite(测试套件)为根路径,仅允许出现1次,是多个test(测试用例)的集合,以下为各属性含义及取值 4 @name 必填,标记suite的名称 5 @junit 选填,是否以junit模式运行,可选值(true|false) 默认值"false" 6 @verbose 选填,命令行信息打印等级(与测报内容无关),可在测试代码注释中配置,可选值(1|2|3|4|5) 7 @parallel 选填,是否多线程并发运行测试,可选值(false | methods | tests | classes | instances),默认 "false" 8 @thread-count 选填,填写值为正整数,当为并发执行时的线程池数量,默认为"5" 9 @configfailurepolicy 一旦Before/After Class/Methods这些方法失败后,是继续执行测试还是跳过测试;可选值 (skip | continue),默认"skip 10 @annotations="javadoc" 获取注解的位置,如果为

第二章 MySQL基准测试

情到浓时终转凉″ 提交于 2019-12-06 10:19:26
基准测试是针对系统设计的一种压力测试,通常的目标是为了掌握系统的行为。但也有其他原因,如重新某个系统状态,或者是做新硬件的可靠性测试。我们将特别讨论一下sysbench,这是一款非常优秀的MySQL基准测试工具。 2.1 为什么需要基准测试 基准测试是唯一有效、可以学习系统在给定的工作负载下会发生什么的方法。基准测试可以观察在不同压力下的行为,评估系统的容量,掌握哪些是重要的变化,或者观察系统如何处理不同的数据。基准测试可以在系统实际负载之外创造一些虚拟场景进行测试。 2.2 基准测试的策略 基准测试有两种主要的策略:一是针对整个系统的整体测试,另外是单独测试mysql。这两种策略也被称为集成式(full-stack)以及单组件式(single-component)基准测试。 2.2.1 测试何种指标 吞吐量 吞吐量指的是单位时间内的事务处理数。这一直是经典的数据库应用测试指标。一些标准的基准测试被广泛地引用,如TPC-C,而且很多数据库厂商都努力争取在这些测试中取得好成绩。这类基准测试主要针对在线事务处理(OLTP)的吞吐量,非常使用于多用户的交互式应用。常用的测试单位是每秒事务数(TPS),有时也采用每分钟事务数(TPM)。 响应时间或者延迟 这个指标用于测试任务所需的整体时间。根据具体的应用,测试的时间单位可能是微妙、毫秒、秒或者分钟。根据不同的时间单位可以计算出平均响应时间

【腾讯优测干货分享】从压测工具谈并发、压力、吞吐量

你。 提交于 2019-12-06 01:20:17
本文来自于 腾讯bugly开发者社区 ,非经作者同意,请勿转载,原文地址: http://dev.qq.com/topic/580d914e07b7fc1c26a0cf7c 前言 随着部门业务的拓展,我们有了很多性能测试的机会,但在实战中,慢慢发现,我们对性能测试的理解并不如自己想的那么清晰,对基本概念和理论的混淆,导致对测试结果的不够自信,测试过程也常会面临质疑。 所以这一次,我们不说性能测试怎么做,先一起梳理下性能测试的基本理论,分析这些理论如何在压测工具中产生影响。 系统性能描述 描述一个系统的性能从来不是一句话或是一个数值的事。 在IEEE的定义中 :性能是系统或组件在给定约束中实现的指定功能的程度,诸如速度、正确性、内存使用等。 所以性能测试报告中,对系统性能的描述应该是多方面的,如:执行效率、稳定性、兼容行、可靠性、可扩展性容量等;其中,执行效率通过 并发 用户数、响应时间、 吞吐量 、成功率、资源消耗综合体现。 并发测试 性能测试有:负载测试、压力测试、配置测试、并发测试、容量测试、稳定性测试。 其中,并发测试是测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题。 在实际的压测中,我们基本上都是设置多个并发,再进行负载测试、压力测试等,因为现实中,我们的系统就是面对多个用户的同时使用,并且,并发用户的数量,直接影响着系统资源的消耗

性能测试:深入理解线程数,并发量,TPS,看这一篇就够了

喜欢而已 提交于 2019-12-05 22:39:04
并发数,线程数,吞吐量,每秒事务数(TPS)都是性能测试领域非常关键的数据和指标。 那么他们之间究竟是怎样的一个对应关系和内在联系? 测试时,我们经常容易将线程数等同于表述为并发数,这一表述正确吗? 本文就将对性能领域的这些关键概念做一次探讨。 文章可能会比较长,希望您保持耐心看完。 1. 走进开封菜,了解性能 ①老王开了家餐厅 我们的主角老王 ,在M市投资新开业了一家 ,前来用餐的顾客络绎不绝: 餐厅里有4种不同身份的人员: 用户一次完整的用餐流程如下: 顾客到店小二处付款点餐 => 小二将订单转发给后厨 => 后厨与备菜工配合,取材完成烹饪后交给小二 => 小二上菜,顾客用餐。 假设所有顾客都不堂食而是打包带走,也就是不考虑用户用餐时间。餐厅完成一次订单的时间是多久? 订单时间 = 顾客点单时间 + 前台接收转发时间 + 后厨取材烹饪时间 + 后厨交给服务员,服务员上菜时间。 说白了就是每个流程的耗时相加。 假设以上时间分别为1,1,5,1(分钟),那么一次订单的完成时间就是8分钟。 ②问题来了 餐厅当然不可能只有一个人就餐,否则老王不要带着小姨子跑路。 所以我们接下来看多人就餐的情况。 假设同一时间点上有两人 就餐,会发生什么情况? 第一位用户与第一个场景一样,仍然是点单-下单-烹饪-上菜,8分钟后第一位顾客拿着打包的食物离开。 第二位用户则有所不同了。假设小二,厨师

thinkphp高并发抢购代码测试-解决高并发下的超卖问题!

假装没事ソ 提交于 2019-12-05 07:01:45
下面测试2种抢购实现方案 首先数据库中一个很简单的表 DROP TABLE IF EXISTS `op_qiang`; CREATE TABLE `op_qiang` ( `id` int(10) NOT NULL AUTO_INCREMENT, `num` int(8) unsigned NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; INSERT INTO `op_qiang` (`id`, `num`) VALUES (1, 10); op_qiang这个表中 ID为1的商品 库存数量为10第一种方案 将mysql中,num这个字段 设置为 unsigned 表示这个字段不能为负数,如果减库存为负数了就会返回flase总而解决超卖问题。 //抢购 通过 mysql 字段设置 设为unsigned, 实现 public function sqla(){   $f = db('qiang')->where('id',1)->find();   $t = mt_rand(100,999999);   if($f['num']<=0){     exit("over");   }   $re = db('qiang')->where('id',1)-

sso单点登录系统的压力测试

余生长醉 提交于 2019-12-05 05:11:15
环境:vmware centos7.4 工具:ab压力测试工具 测试对象:sso单点登录系统 电脑:win10 4核 项目环境:flask+uwsgi+nginx(uwsgi 2进程,4线程) 1. 100个用户,总共100个请求 测试截图 2. 500个用户,总共500个请求 测试截图 500个用户并发0.86秒, 3. 1000个用户并发,总共1000个请求 测试截图 1000个并发1.622,4进程4线程可以接受啊,如果加了协程是不是更快一点 4. 2000个用户并发,总共2000个请求 测试截图 测试用例: 结论 1000个并发登录才一秒,完全可以接受啊,毕竟csdn登录的时候都要1秒多,以后要买个带宽高的服务器,和上一篇对比简直是天壤之别啊! 来源: https://www.cnblogs.com/vinic-xxm/p/11908688.html

并发测试过程中,并发数量级设置

帅比萌擦擦* 提交于 2019-12-05 04:46:36
在做并发测试的时候,需要参考tomcat的maxThreads、acceptCount(最大线程数、最大排队数); tomcat 的Connector配置如下 <</span>Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxThreads="800" acceptCount="1000"/> 其中最后两个参数意义如下: maxThreads :tomcat起动的最大线程数,即同时处理的任务个数,默认值为200 acceptCount :当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100 这两个值如何起作用,请看下面三种情况 情况1:接受一个请求,此时tomcat起动的线程数没有到达maxThreads,tomcat会起动一个线程来处理此请求。 情况2:接受一个请求,此时tomcat起动的线程数已经到达maxThreads,tomcat会把此请求放入等待队列,等待空闲线程。 情况3:接受一个请求,此时tomcat起动的线程数已经到达maxThreads,等待队列中的请求个数也达到了acceptCount,此时tomcat会直接拒绝此次请求,返回connection refused maxThreads如何配置

数据库连接池性能测试(hikariCP,druid,tomcat-jdbc,dbcp,c3p0)

蓝咒 提交于 2019-12-05 00:42:21
本文主要是对这hikariCP,druid,tomcat-jdbc,dbcp,c3p0几种连接池的详细的功能和性能测试对比,通过这次测试对目前主流的一些连接池做一个全面的对比,从而给业务系统一个最佳的推荐。 测试结论 性能方面 hikariCP>druid>tomcat-jdbc>dbcp>c3p0 。hikariCP的高性能得益于最大限度的避免锁竞争。 druid功能最为全面,sql拦截等功能,统计数据较为全面,具有良好的扩展性。 综合考虑到目前venus已经支持druid且hikariCP并未发现有太多大规模的生产实践的案例,后续将推荐使用druid并把codegen生成的代码默认连接池为druid。 可开启prepareStatement缓存,对性能会有大概10%的提升。 功能对比 功能 dbcp druid c3p0 tomcat-jdbc HikariCP 是否支持PSCache 是 是 是 否 否 监控 jmx jmx/log/http jmx,log jmx jmx 扩展性 弱 好 弱 弱 弱 sql拦截及解析 无 支持 无 无 无 代码 简单 中等 复杂 简单 简单 更新时间 2018.1.13 2018.1.14 2017.5.4 2018.1.14 特点 依赖于common-pool 阿里开源,功能全面 历史久远,代码逻辑复杂,且不易维护 优化力度大,功能简单