加压测试TPS上不去的性能分析
阶梯式加压测试接口异常可能存在的原因:
压力机本身性能测试的瓶颈
分析:单机负载能力有限,如果需要模拟的用户请求数超过其负载极限,也会间接影响TPS
,可以通过进行分布式压测来解决其单机负载的问题
网络带宽限制
分析:在压力测试中,有时候要模拟大量的用户请求,如果单位时间内传递的数据包过大,超过了带宽的传输能力,那么就会造成网络资源竞争,间接导致服务端接收到的请求数达不到服务端的处理能力上限。
中间件连接处的限制
分析:中间件限制了用户每分钟访问次数,一般用于反爬。
Java线程的阻塞
分析:当程序阻塞时,会降低程序的效率
垃圾回收机制
从常见的应用服务器来说,比如Tomcat,因为java的的堆栈内存是动态分配,具体的回收机制是基于算法,如果新生代的Eden和Survivor区频繁的进行Minor GC,老年代的full GC也回收较频繁,那么对TPS也是有一定影响的,因为垃圾回收其本身就会占用一定的资源。
服务器本身CPU内存
分析:计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行
压测脚本
分析:最大的模拟请求数超过了设置的线程数,导致线程不足。
系统架构
分析:是否有缓存服务,缓存服务器配置,缓存命中率、缓存穿透以及缓存过期等,都会影响到测试结果。
连接池较少
分析:客户端发起请求,先检查是否有闲置连接,如果有,则分配该连接给其使用;如果没有,则请求进入等待队列或新建一个连接对象供其使用。可用连接池较少,造成请求等待。
有可能是:可用的连接数太少,造成请求等待。连接池一般分为服务器连接池(比如Tomcat)和数据库连接池(或者理解为最大允许连接数也行)。
原文地址
https://blog.csdn.net/Lucrecia666/article/details/113831665