首页 > 其他分享 >性能测试中响应时间长,吞吐量低的问题接口压测过程

性能测试中响应时间长,吞吐量低的问题接口压测过程

时间:2022-10-08 17:35:02浏览次数:49  
标签:压测 接口 响应 吞吐量 sec 服务器

我在做本次国庆抽奖项目时遇到了一个很严重的问题,就是响应时间超长,导致吞吐量和服务器CPU上不去。应该如何解决这类问题呢?

首先得清楚响应时间超长是哪个节点的时间长,是连接端响应时间长还是服务器处理端的响应时间长。

对接口进行瞬时并发测试,添加集合点定时器。这种场景下该问题通过添加表格结果就能清楚的知道。

从上图看到,connect time(连接时间)非常接近latency(响应时间),由此可知耗时花费在连接时间上。

连接时间超长的阻塞大致有:网络阻塞、tcp传输超时、tomcat和数据库连接池/最大连接数不够用(资源抢占)、线程有死锁、程序中有慢SQL。

在外网使用长连接的方式对接口进行负载测试,tps还是上不去,服务器CPU利用率也很低,暂时考虑是网络阻塞。

在内网使用长连接的方式对接口进行负载测试,TPS是外网TPS的3倍,服务器CPU利用率从百分十几上升到百分七十左右,确认外网环境存在网络阻塞。

持续运行2小时后jvm开始出现FGC现象,但是性能指标还未达到准出标准。由于测试环境服务器配置为2C2核,改为在生产环境进行压测,生产环境是多台服务器搭建的负载均衡,配置足够高。

在生产环境对其中一个接口进行负载测试,得出一下对比数据,进一步验证外网存在严重的网络阻塞问题,测试环境资源不足。

环境 网络 吞吐量 响应时间 服务器CPU 其他资源
测试环境 外网 130/sec 1.5s 12.5 正常
内网 1700/sec 0.9s 70.0% 正常
生产环境

外网 150/sec 0.59s 不到5% 正常
内网 6646/sec 0.18s 不到15% 正常

本接口在生产环境的性能指标是达标的,该接口完成测试。

  其中一个接口在生产环境内网压测,吞吐量只有850/sec,达不到性能指标,表格检测结果中大约每隔10-25个请求就产生一个响应时间超过1秒钟的请求。

初步断定吞吐量上不去的原因就在此。通过查找日志发现关联程序中有一个SQL比较慢,对该sql添加索引。tps运行监控直线飙升至1700/sec。

如下所示:

经过压测得出该接口最佳性能可达到2149/sec,响应时间0.15,该接口达到性能准出标准。

另一个接口,发出的请求无法到达服务器,全部卡在客户端与服务器之间。如下所示:

开发重塑接口逻辑,给SQL添加索引,优化数据库里的数据,然后进行复测。得出如下结果:

接口最优性能:700线程,吞吐量7055/sec,响应时间168ms,该接口达到性能准出标准。

最终得到如下数据:

标签:压测,接口,响应,吞吐量,sec,服务器
From: https://www.cnblogs.com/ngd-mzl/p/16769623.html

相关文章

  • IPMI智能平台管理接口
      智能平台管理接口(IPMI)是一种开放标准的硬件管理接口规格,定义了嵌入式管理子系统进行通信的特定方法。IPMI信息通过基板管理控制器(BMC)(位于IPMI规格的硬件组件......
  • EnvironmentAware接口的作用
    在SpringBoot中的应用凡注册到Spring容器内的bean,实现了EnvironmentAware接口重写setEnvironment方法后,在工程启动时可以获得application.properties的配置文件配置的属性值......
  • postman接口传参案例
    案例:接口A  根据返回值需要从返回值中提取userid值,在Tests标签栏下编写脚本//获取返回的响应值,并转化为json格式var jsonData = pm.response.json();// 获......
  • 接口幂等性
    01什么是接口幂等性接口幂等性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生副作用;比如支付场景。02哪些情况需要防止用户多......
  • Java_函数式接口&Stream流
    Java_函数式接口&Stream流1.函数式接口1.1函数式接口概述【理解】概念有且仅有一个抽象方法的接口如何检测一个接口是不是函数式接口@FunctionalInterface放在......
  • Java_多态&抽象类&接口
    Java_多态&抽象类&接口1.多态1.1多态的概述(记忆)什么是多态​ 同一个对象,在不同时刻表现出来的不同形态多态的前提要有继承或实现关系要有方法的重写要......
  • Java基础——接口
    一、什么是接口抽象类是从多个类中抽象出来的模板,如果将这种抽象进行的更彻底,就是更加特殊的“抽象类”——接口接口是Java中的引用类型,它类似于类,它是抽象方法的集合。......
  • docker搭建yapi接口文档系统、Idea中上传接口、在线调用
    一、前言在我们后端开发中,必不可少的是接口的交接,有很多种方式,常见的就是swagger,不过这个侵入性太强了。还有就是接口文档的框架,比如今天小编带大家一起搭建的yapi,在公司......
  • 常用的 函数式接口
    函数式接口:将注解@FunctionalInterface放在一个接口上,编译器会帮我们检查这个接口是否亿实业韩式接口 JDK提供的常见函数式接口:所在包:java.util.function ......
  • 《Android底层接口与驱动开发技术详解》digest
    第一章:IDE:EclipseADTforjavadeveloper其它:ApacheAntJavaSEDevelopmentKit5或6Linux和Mac上使用ApacheAnt1.65+,Windows上使用1.7+版本;(单独的JRE是不可以的,必须......