文章插图
压力测试中TPS一直上不去,是什么原因?稍微整理了下思路
先来解释下什么叫TPS:
TPS(Transaction Per Second):每秒事务数,指服务器在单位时间内(秒)可以处理的事务数量,一般以requests/second为单位,总请求数量/总耗时秒数 。
下面就说说压测中为什么TPS上不去的原因:
1、网络带宽
在压力测试中,有时候要模拟大量的用户请求,如果单位时间内传递的数据包过大,超过了带宽的传输能力,那么就会造成网络资源竞争,间接导致服务端接收到的请求数达不到服务端的处理能力上限 。
2、连接池
可用的连接数太少,造成请求等待 。连接池一般分为服务器连接池(比如Tomcat)和数据库连接池(或者理解为最大允许连接数也行) 。
3、垃圾回收机制
从常见的应用服务器来说,比如Tomcat,因为java的的堆栈内存是动态分配,具体的回收机制是基于算法,如果新生代的Eden和Survivor区频繁的进行Minor GC,老年代的full GC也回收较频繁,那么对TPS也是有一定影响的,因为垃圾回收其本身就会占用一定的资源 。
4、数据库配置
高并发情况下,如果请求数据需要写入数据库,且需要写入多个表的时候,如果数据库的最大连接数不够,或者写入数据的SQL没有索引没有绑定变量,抑或没有主从分离、读写分离等,
就会导致数据库事务处理过慢,影响到TPS 。
5、通信连接机制
串行、并行、长连接、管道连接等,不同的连接情况,也间接地会对TPS造成影响 。
6、硬件资源
包括CPU(配置、使用率等)、内存(占用率等)、磁盘(I/O、页交换等) 。
7、压力机
比如jmeter,单机负载能力有限,如果需要模拟的用户请求数超过其负载极限,也会间接影响TPS(这个时候就需要进行分布式压测来解决其单机负载的问题) 。
8、压测脚本
还是以jemter举个例子,之前工作中同事遇到的,进行阶梯式加压测试,最大的模拟请求数超过了设置的线程数,导致线程不足 。
提到这个原因,想表达意思是:有时候测试脚本参数配置等原因,也会影响测试结果 。
9、业务逻辑
业务解耦度较低,较为复杂,整个事务处理线被拉长导致的问题 。
10、系统架构
比如是否有缓存服务,缓存服务器配置,缓存命中率、缓存穿透以及缓存过期等,都会影响到测试结果 。
以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!
「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助:- kindle背面判断型号 怎么看kindle是第几代
- 怎么缓解抑郁 怎么才能走出抑郁
- 一个家庭最大的心酸,不是贫穷,不是奢侈,而是什么?
- 永琰是太子吗
- 张予曦是混血吗
- 永琪第几集死的
- 吴倩是武大校花吗
- 佟梦实是什么运动员
- 9.8分以上的国产电视剧
- 梁朝伟为什么不是四大天王