如何解决性能测试中TPS上不去的几种原因

admin 2019-8-23 301

昨晚在某个测试群看到有人问了一个问题:压力测试中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:性能瓶颈分析不能单从局部分析,要综合起来,多维度分析问题原因。上面列出的几点,可能有描述不当或者遗漏的,仅供参考。


少客联盟- 版权声明 1、本主题所有言论和图片纯属会员个人意见,与少客联盟立场无关。
2、本站所有主题由该帖子作者发表,该帖子作者admin少客联盟享有帖子相关版权。
3、少客联盟管理员和版主有权不事先通知发贴者而删除本文。
4、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者admin少客联盟的同意。
5、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任。
6、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责。
7、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意。
8、官方反馈邮箱:chinasuc@chinasuc.cn


上一篇:免费分享2000G黑客技术教程+工具
下一篇:教你如何查看系统的WIFI密码
Whatever is worth doing is worth doing well. juvenile hacker league
最新回复 (0)
    • 少客联盟
      2
        登录 注册 QQ登录(停用)
返回