TPS和QPS的区别和理解&性能测试流程&问题定位排查
一、TPS:Transactions Per Second的缩写,也就是事务数/秒(每秒传输的事物处理个数),即服务器每秒处理的事务数。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数,
个人理解如下:
1、Tps即每秒处理事务数,包括了
1)用户请求服务器
2)服务器自己的内部处理
3)服务器返回给用户
这三个过程,每秒能够完成N个这三个过程,Tps也就是N;
TPS包括一条消息入和一条消息出,加上一次用户数据库访问。(业务TPS = CAPS × 每个呼叫平均TPS)
一般的,评价系统性能均以每秒钟完成的技术交易的数量来衡量。系统整体处理能力取决于处理能力最低模块的TPS值。
二、QPS:Queries Per Second的缩写,也就是查询率/秒,即一台服务器每秒能够相应的查询次数。它是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。
对应fetches/sec,即每秒的响应请求数,也即是最大吞吐能力。
例如:访问一个页面会请求服务器3次,一次访问,产生一个“T”,产生3个“Q”
tps和qps区别:
(1)如果是对一个查询接口压测,且这个接口内部不会再去请求其它接口,那么 TPS = QPS,否则,TPS ≠ QPS
(2)如果是容量场景,假设 N 个接口都是查询接口,且这个接口内部不会再去请求其它接口,QPS = N * TPS
(3)QPS指的是“每秒查询率”;而TPS指的是“事务数/秒”。理解:Tps即每秒处理事务数,对于一个页面的一次访问,形成一个Tps;而一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就可计入“Qps”之中。
#_________________________________________性能相关__________________________________________________________________________
- tps的值决定了服务器处理能力的强弱,这个值一般是固定的。当然也可能出现压力太大,tps降低的情况。
- 响应时间这个值在发压速度不快的时候,由服务器决定;当发压速度很大时,肯定会大幅增加。
- 性能测试过程中,不一定能把硬件压出瓶颈,有些代码逻辑处理的慢,db慢。
- 在性能测试中我一般压测三次: ①不限速200线程压测;②提高线程,不限速压测,如果tps不增加,说明tps已到极限;③控制发送速度为tps的值,压测稳定后,获取响应时间,这个tps和响应时间即为系统最大最优的性能
- tps和响应时间的计算公式,统计规律上可以这样认为,响应时间/1 * 并发数 = tps
- 压测有性能预期(tps,响应时间)的接口,我们严格控制发送速度,观察响应时间即可;但是也要压测一下接口的极限,压测极限的方法参考4,极限的结果作为后续对比的基准。
1.6编写测试报告:
列出执行场景的结果图形、监控资源的图形,报告案例如下(jjmeter压测报告,,性能压测报告,,性能报告案例)
2.问题定位于排查
2.1增加压力流量上不去
- 带宽:如果单位时间内传递的数据包过大,超过了带宽的传输能力,那么就会造成网络资源竞争,间接导致服务端接收到的请求数达不到服务端的处理能力上限。
- 连接池:可用的连接数太少,造成请求等待。连接池一般分为服务器连接池(比如Tomcat)和数据库连接池(或者理解为最大允许连接数也行)
- 硬件资源:包括CPU(配置、使用率等)、内存(占用率等)、磁盘(I/O、页交换等)。
- 压力机:比如jmeter,单机负载能力有限,如果需要模拟的用户请求数超过其负载极限,也会间接影响TPS(这个时候就需要进行分布式压测来解决其单机负载的问题)。
- 数据库配置:高并发情况下,如果请求数据需要写入数据库,且需要写入多个表的时候,如果数据库的最大连接数不够,或者写入数据的SQL没有索引没有绑定变量,抑或没有主从分离、读写分离等,就会导致数据库事务处理过慢,影响到TPS。
- 更多原因:https://blog.csdn.net/liuwkk/article/details/88978574 ,,https://blog.csdn.net/xiaona0523/article/details/107864423
3.性能瓶颈原因
1、硬件上的性能瓶颈:
一般指的是CPU、内存、磁盘读写等的瓶颈,为服务器硬件瓶颈。
2、应用软件上的性能瓶颈:
一般指的是服务器操作系统瓶颈(参数配置)、数据库瓶颈(参数配置)、web服务器瓶颈(参数配置)、中间件瓶颈(参数配置)等
3、应用程序上的性能瓶颈:
一般指的是开发人员,开发出来的应用程序(如sql语句、数据库设计、业务逻辑、算法等)。
4、操作系统上的性能瓶颈:
一般指的是Windows、linux等操作系统,如出现物理内存不足时,或虚拟内存设置不合理(虚拟内存设置不合理,会导致虚拟内存的交换率大大降低,从而导致行为的响应时间大大增加,可以认为在操作系统上出现了性能瓶颈)。
5、网络设备上的性能瓶颈:
一般指的是防火墙、动态负载均衡器、交换机等设备。
备注:性能瓶颈原因定位十分复杂,需抽丝剥茧逐一排除,以上信息仅供参考
4.性能分析常见问题及原因
1.持续缓慢:应用程序一直特别慢,改变负载,对整体响应时间影响很少;
2.随着时间推进越来越慢:负载不变,随着时间推进越来越慢,可能到达某个阈值,系统被锁定或出现大量错误而崩溃;
3.随着负载增加越来越慢:每增加若干用户,系统明显变慢,用户离开系统,系统恢复原状;
4.零星挂起或异常错误:可能是负载或某些原因,用户看到页面无法完成并挂起,无法消除;
5.可预见的锁定:一旦出现挂起或错误,就加速出现,直到系统完全锁定。通常要重启系统才解决。
6.突然混乱:系统一直运行正常,可能是一个小时或三天之后,系统突然出项大量错误或锁定
7.内存持续上涨:在吞吐量固定的前提下,如果内存持续上涨,那么很有可能是被测服务存在明显的内存泄漏,需要使用valgrind等内存检查工具进行定位
备注:
1.怎么定位基础性能
可以看应用容器CPU、内存,服务器总体cpu内存,,redis的cpu、内存,mysql的cpu、内存,报错日志等
相关连接:
https://www.cnblogs.com/uncleyong/p/11059556.html..................................性能测试:TPS和QPS的区别
https://blog.csdn.net/weixin_36317492/article/details/112068533 ..............单接口压测和多接口压测tps区别_了解TPS和QPS的区别
https://www.cnblogs.com/wjhaha/p/14981684.html?ivk_sa=1024320u .......单接口性能需要如何操作?单接口性能需要关注哪些数据?
https://www.cnblogs.com/caiwenjing/p/8081380.html ..................................性能需求分析
https://blog.csdn.net/qq_24373725/article/details/79148501.......................一个完整的性能测试流程
https://blog.csdn.net/xiangxiupp/article/details/53862056 .........................性能测试常见面试题
https://www.jianshu.com/p/8f5e6215214f ..................................................性能测试常见问题
https://www.cnblogs.com/paulwinflo/p/5681213.html .................................性能测试总结 ,,QPS和TPS的理解
http://www.51ste.com/share/det-715.html .................................................常见性能问题分析及解决建议
https://www.cnblogs.com/111testing/p/11403445.html ...............................性能测试分析过程(吞吐量越大,响应时间越短)
https://www.sohu.com/a/194294375_165433 ...........................................性能测试项目中遇到的问题和解决方法
https://blog.csdn.net/xuecancan/article/details/83472584........................记一次性能测试过程中遇到的问题的定位思路(性能测试问题及故障定位分析)
https://mp.weixin.qq.com/s?__biz=MzU4MTE2NDEyMQ...........................服务端性能测试入门指南,,性能测试问题定位分析
posted on 2021-03-17 14:25 chen_2987 阅读(2667) 评论(0) 编辑 收藏 举报