基本概念:

QPS:Queries Per Second意思是“每秒查询率” ,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。

TPS:Transaction Per Second意思是“事务数/秒”,是软件测试结果的衡量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数,最终利用这些信息来估计得分。客户机使用加权协函数平均方法来计算客户机得分,测试软件就是利用这些信息使用加权协函数平均方法来计算服务器端的整体TPS得分。

QPS(TPS)=并发数/平均响应时间 或者并发数=QPS平均响应时间 “这里的响应时间的单位是秒”

举例,我们一个http请求的响应时间是20ms,在10个并发的情况下,QPS就是 QPS=10*1000/20=500.

这里有个关键点就是 QPS一定是跟并发数联系在一起的,离开并发数谈QPS是没有意义的。

  QPS、 TPS和性能的关系

  一个系统吞吐量通常由QPS(TPS)、并发数两个因素决定,每套系统这两个值都是一个相对极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换,内存等等其他消耗导致系统性能下降。

开始系统很自由一个用户,CPU工作肯定是不饱和的。一方面该服务器可能有多个CPU,但是只处理单个进程,另一方面,在处理一个进程中,有些阶段可能是IO阶段,这个时候会造成CPU等待,但是有没有其他请求进程可以被处理。随着并发用户数的增加,CPU利用率上升,QPS相应增加(公式为QPS=并发用户数/平均响应时间),随着并发用户数的增加,平均响应时间也在增加,而且平均响应时间增加是一个指数增加曲线。而当并发数增加到很大时,每秒钟都会有很多请求需要处理,会造成进程(线程)频繁切换,反正镇定用于处理请求的时间变少,每秒钟能够处理的请求数反而变少,同时用户的请求等待时间也会变大,甚至超多用户的心理底线。

结论

1、我们对单台服务器进行压测有了性能测试数据后,我们可以根据业务能接受最大客户响应时间对应到相应的QPS数,从而计算出需要的服务器的数量。举例来说,响应时间10ms和1000ms对通过浏览器的客户是没有明显体验差别的,基于1000ms估计服务器的数量我们的成本会降低很多。

2、每天300wPV的在单台机器上,这台机器需要多少QPS?对于这样的问题,假设每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间。( 3000000 0.8 ) / (360024 * 0.2 ) = 139 (QPS).

3、还是2中的数据,如果一台机器的QPS是58,需要几台机器来支持?答:139 / 58 = 3

性能测试的基础知识--QPS和TPS的更多相关文章

  1. JMeter性能测试的基础知识和个人理解

    JMeter性能测试的基础知识和个人理解 1. JMeter的简介   JMeter是Apache组织开发的开源项目,设计之初是用于做性能测试的,同时它在实现对各种接口的调用方面做的比较成熟,因此,常 ...

  2. 性能测试学习 第九课--LR12中controller基础知识

    1.设计手工场景,理解集合点的策略 2.添加load generator 一.controller基础知识 1.controller的原理 通过场景设计来模拟用户的真实操作并调用vugen中的脚本,然 ...

  3. 网站性能测试指标(QPS,TPS,吞吐量,响应时间)详解

    转载:http://www.51testing.com/html/16/n-3723016.html   常用的网站性能测试指标有:吞吐量.并发数.响应时间.性能计数器等. 并发数 并发数是指系统同时 ...

  4. 性能测试需求分析 业务PV量,响应时间、QPS、TPS

    一. 性能测试需求分析 1.1      性能测试需求内容 性能测试需求应包括以下内容: a)    测试场景及用例,用例访问URL: b)   目标接口方法的入参.出参: c)    外部依赖的服务 ...

  5. IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列

    1.引言 消息是互联网信息的一种表现形式,是人利用计算机进行信息传递的有效载体,比如即时通讯网坛友最熟悉的即时通讯消息就是其具体的表现形式之一. 消息从发送者到接收者的典型传递方式有两种: 1)一种我 ...

  6. RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ基础知识详解,RabbitMQ布曙

    消息队列及常见消息队列介绍 2017-10-10 09:35操作系统/客户端/人脸识别 一.消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以 ...

  7. 老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化

    引言 今天周末,我在家坐着掐指一算,马上又要到一年一度的金九银十招聘季了,国内今年上半年受到 YQ 冲击,金三银四泡汤了,这就直接导致很多今年毕业的同学会和明年毕业的同学一起参加今年下半年的秋招,这个 ...

  8. selenium自动化基础知识

    什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要 ...

  9. Magento 架构基础知识概述

    Megento 架构基础知识概述 Magento整合了面向对象的基于PHP的应用程序的核心架构原则.这些一般原则的综合讨论既有在线的,也有印刷形式.以下讨论主要关注这些主题如何直接应用于Magento ...

随机推荐

  1. unity编辑器扩展_06(给选项添加快捷键,控制菜单是否启用)

    代码: [MenuItem("Tools/Delete ", true, 1)]    static bool DeleteVadidate()    {        if (S ...

  2. MSIL实用指南-数据类型转换

    一.类的强制转换1.转换成某个类用Castclass指令.实例代码:ilGenerator.Emit( OpCodes.Castclass , typeof(ClassA) ); 2.转换成某个值类型 ...

  3. 从强转 byte 说起

    折腾的心,颤抖的手,只因在 main 函数中执行了一次 int 强转 byte 的操作,输出结果太出所料,于是入坑,钻研良久,遂有此篇. 我们都知道,Java中有8中基本数据类型,每种类型都有取值范围 ...

  4. [python]标准比较运算符

    1. python的标准比较运算符,根据表达式的值的真假返回布尔值. 比较运算符: <   <=   >   >=   ==   !=   <> >>& ...

  5. UVA-10004-Bicoloring二分图染色

    题意:给一张图,判断是不是二分图: 自己一开始不知道是二分图染色,理解的是任意三点不能互相连接 可能以后遇到这样的模型,可以往二分图想: 首先怎么判定一个图是否为二分图 从其中一个定点开始,将跟它邻接 ...

  6. 2019 Multi-University Training Contest 3

    B.Blow up the city solved by F0_0H 210min 题意 给一个DAG,每次询问给定u,v,求使得u或v不能与中心点联通的关键点个数 做法 按照拓扑序建树 新加节点的父 ...

  7. 九度 题目1454:Piggy-Bank 完全背包

    题目1454:Piggy-Bank 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:1584 解决:742 题目描述: Before ACM can do anything, a budg ...

  8. Photon Server 服务端编程

    Photon Server 和 Unity3D 数据交互: Photon Server 服务端编程 Unity3D 客户端编程 VS2017 之 MYSQL实体数据模 一:Photon Server的 ...

  9. HDFS 读写流程-译

    HDFS 文件读取流程 Client 端调用 DistributedFileSystem 对象的 open() 方法. 由 DistributedFileSystem 通过 RPC 向 NameNod ...

  10. @PathVariable性能损耗分析

    前端时间参与了一次业务线排障,是接口服务并发性能比较差,性能损耗大的问题,我经过几次研究分析和压测,确定了故障源是@PathVariable耗时过长引起的. @PathVariable使用形式: @R ...