性能测试中TPS上不去的几种原因浅析
昨晚在某个测试群看到有人问了一个问题:压力测试中TPS一直上不去,是什么原因?稍微整理了下思路,列举性的简略回答了他的问题。
这篇博客,就具体说说在实际压力测试中,为什么有时候TPS上不去的原因。如有遗漏或不对的,请评论区指出,不胜感激。。。
先来解释下什么叫TPS:
TPS(Transaction Per Second):每秒事务数,指服务器在单位时间内(秒)可以处理的事务数量,一般以request/second为单位。
关于性能测试的其他一些常见术语,可参考之前的博客:性能测试:常见术语浅析
下面就说说压测中为什么TPS上不去的原因:
1、网络带宽
在压力测试中,有时候要模拟大量的用户请求,如果单位时间内传递的数据包过大,超过了带宽的传输能力,那么就会造成网络资源竞争,间接导致服务端接收到的请求数达不到服务端的处理能力上限。
2、连接池
可用的连接数太少,造成请求等待。连接池一般分为服务器连接池(比如Tomcat)和数据库连接池(或者理解为最大允许连接数也行)。
(关于连接池的具体内容,可参考之前的博客:性能测试:连接池和线程)
3、垃圾回收机制
从常见的应用服务器来说,比如Tomcat,因为java的的堆栈内存是动态分配,具体的回收机制是基于算法,如果新生代的Eden和Survivor区频繁的进行Minor GC,老年代的full GC也回收较频繁,那么对TPS
也是有一定影响的,因为垃圾回收其本身就会占用一定的资源。
4、数据库配置
高并发情况下,如果请求数据需要写入数据库,且需要写入多个表的时候,如果数据库的最大连接数不够,或者写入数据的SQL没有索引没有绑定变量,抑或没有主从分离、读写分离等,
就会导致数据库事务处理过慢,影响到TPS。
5、通信连接机制
串行、并行、长连接、管道连接等,不同的连接情况,也间接的会对TPS造成影响。
(关于协议的连接,可参考之前的博客:HTTP协议进阶:连接管理)
6、硬件资源
包括CPU(配置、使用率等)、内存(占用率等)、磁盘(I/O、页交换等)。
7、压力机
比如jmeter,单机负载能力有限,如果需要模拟的用户请求数超过其负载极限,也会间接影响TPS(这个时候就需要进行分布式压测来解决其单机负载的问题)。
8、压测脚本
还是以jemter举个例子,之前工作中同事遇到的,进行阶梯式加压测试,最大的模拟请求数超过了设置的线程数,导致线程不足。
提到这个原因,想表达意思是:有时候测试脚本参数配置等原因,也会影响测试结果。
9、业务逻辑
业务解耦度较低,较为复杂,整个事务处理线被拉长导致的问题。
10、系统架构
比如是否有缓存服务,缓存服务器配置,缓存命中率、缓存穿透以及缓存过期等,都会影响到测试结果。
PS:性能瓶颈分析不能单从局部分析,要综合起来,多维度分析问题原因。上面列出的几点,可能有描述不当或者遗漏的,仅供参考。。。
如果有不准确的,请评论指正,谢谢!
相关文章
- 《大话移动APP测试:Android与iOS应用测试指南》
- 使用pytest-xdist实现分布式APP自动化测试
- 基于jmeter+perfmon的稳定性测试记录
- 软件测试中接口测试基础知识的认知,如何做好接口测试
- 性能测试Jmeter脚本生成工具实践
- 想成为月薪过万的软件测试工程师?你得了解这些测试思想和工作方法~
- 月薪12.8K,转行测试从0到1斩获3份过万offer,分享一些我的小秘招~
- 测试管理的知识和讨论总结
- 存储性能测试漫谈
- UWA Pipeline 新功能|构建分析、自动化测试支持iOS平台
- 面试百问:如何测试App性能?
- 这16个性能测试工具,测试人用了都说好!
- what?测试/开发程序员要被淘汰了?年龄40被砍到了32?一瞬间,有点缓不过神来......
- Pytest 自动化测试 / [码尚教育]Python全栈自动化VIP课程对标大厂标准(挑战年薪40万)
- 【软件测试】测试人的巅峰?测试专家?
- 4年功能测试,我一进阶python接口自动化测试,跳槽拿了20k......
- 【性能测试】5年测试老鸟,总结性能测试基础到指标,进阶性能测试专项......
- 性能测试培训基础理论
- 测试开发必备技能之 Dubbo 接口测试技术
- 技术分享 | 接口测试之HTTP、HTTPS 抓包分析
- 基于jmeter的性能全流程测试
- 《全栈性能测试修炼宝典 JMeter实战》—第2章 2.1节性能测试初体验
- 数据库性能测试:sysbench用法详解
- JMeter学习-022-JMeter 分布式测试(性能测试大并发、远程启动解决方案)
- 在java中使用JMH(Java Microbenchmark Harness)做性能测试
- Facebook Messenger测试加密对话 执法部门也无法读取
- Python优雅的Requests库助力性能测试
- 在做性能测试之后需要知道些什么
- Jmeter在性能测试中的应用实践样例
- 中兴通讯率先进行中国5G试验26GHz高频测试