需求布景

经过SpringCloudGateway整合Nacos进行负载均衡合动态路由挑选。由于Nacos的服务发现有必定的延迟性,所以在服务突然挂机的时分,QPS较大的情况下,还是会有部分的恳求进入到这个服务。为了处理这个问题,改写了一点点nacos根据ribbon的负载挑选,经过筛选最近呼应时刻较短的服务进行路由挑选。网关是一个项目的命脉,所以便需求进行压测。

进入正文

一、前言

压力测验是每一个Web应用程序上线之前都需求做的一个测验,他能够协助咱们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率;预估系统的承载能力,使咱们能根据其做出一些应对办法。所以压力测验是一个非常重要的过程,下面我带大家来运用一款压力测验东西JMeter。

二、关于JMeter

Apache JMeter是Apache组织开发的根据Java的压力测验东西。用于对软件做压力测验,它最初被规划用于Web应用测验,但后来扩展到其他测验范畴。 它能够用于测验静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 目标、数据库、FTP 服务器, 等等。JMeter 能够用于对服务器、网络或目标模仿巨大的负载,来自不同压力类别下测验它们的强度和剖析全体功能。另外,JMeter能够对应用程序做功能/回归测验,经过创立带有断语的脚本来验证你的程序返回了你期望的成果。为了最大限度的灵活性,JMeter允许运用正则表达式创立断语。 Apache jmeter 能够用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 目标,数据库和查询,FTP服务器等等)的功能进行测验。它能够用于对服务器、网络或目标模仿深重的负载来测验它们的强度或剖析不同压力类型下的全体功能。你能够运用它做功能的图形剖析或在大并发负载测验你的服务器/脚本/目标。

官网:Apache JMeter – Download Apache JMeter

这儿我选用了 4.0 版别的二进制包:mirror.bit.edu.cn/apache//jme…

三、准备工作

由于JMeter是运用JAVA写的,所以运用JMeter之前,先装置JAVA环境,本文就不讲装置JAVA环境了。自行百度,教程许多,首要便是装置JDK。

JAVA环境变量装备:怎么装备Java环境变量-百度经验

解压下载的二进制包,进入bin目录,双击jmeter.bat发动程序。

发动之后会有两个窗口,一个cmd窗口,一个JMeter的 GUI。前面不要忽略CMD窗口的提示信息:

(超详细)通过Jemeter进行压力测试
发动后会看到JMeter界面,如下:

(超详细)通过Jemeter进行压力测试
留意看CMD窗口的提示信息:

================================================================================
Don't use GUI mode for load testing !, only for Test creation and Test debugging.
For load testing, use NON GUI Mode:
   jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
& increase Java Heap to meet your test requirements:
   Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file
Check : https://jmeter.apache.org/usermanual/best-practices.html
================================================================================

上面的意思便是:不要运用GUI运转压力测验,GUI仅用于压力测验的创立和调试;履行压力测验请不要运用GUI。运用下面的指令来履行测验:

 jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]

并且修正JMeter批处理文件的环境变量:HEAP=”-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m”;这儿根据你们的装备灵活设置

更改言语为中文

官方默以为咱们供给了简体中文。经过 【Options】->【Choose Language】变更为简体中文

(超详细)通过Jemeter进行压力测试

四、创立测验

4.1、创立线程组

在“测验方案”上右键 【增加】–>【Threads(Users)】–>【线程组】

(超详细)通过Jemeter进行压力测试
设置线程数和循环次数。我这儿设置线程数为500,循环一次

(超详细)通过Jemeter进行压力测试

4.2、装备元件

(超详细)通过Jemeter进行压力测试
装备咱们需求进行测验的程序协议、地址和端口

(超详细)通过Jemeter进行压力测试
留意:当所有的接口测验的拜访域名和端口都一样时,能够运用该元件,一旦服务器地址变更,只需求修正恳求默认值即可

4.3、构造HTTP恳求

在“线程组”右键 【增加-】->【samlper】–>【HTTP 恳求】设置咱们需求测验的API的恳求途径和数据。我这儿是用的json

(超详细)通过Jemeter进行压力测试

4.4、增加HTTP恳求头

在咱们刚刚创立的线程组上右键 【增加】–>【装备元件】–>【HTTP信息头管理器】。

由于我要传输的数据为json,所以设置一个 Content-Type:application/json

(超详细)通过Jemeter进行压力测试

4.5、增加断语

  • 在咱们刚刚创立的线程组上右键 【增加】–>【断语】–>【呼应断语】。

  • 根据呼应的数据来判别恳求是否正常。我在这儿只判别的呼应代码是否为200。还能够装备错误信息

(超详细)通过Jemeter进行压力测试

4.6、增加察看成果树

  • 在咱们刚刚创立的线程组上右键 【增加】–>【监听器】–>【察看成果树】。

  • 直接增加,然后点击运转按钮就能够看到成果了。

(超详细)通过Jemeter进行压力测试

4.7、增加Summary Report

  • 在咱们刚刚创立的线程组上右键 【增加】–>【监听器】–>【Summary Report】。

  • 直接增加,然后点击运转按钮就能够看到成果了。

(超详细)通过Jemeter进行压力测试

为了不引起不必要的争论,隐藏了TPS。此数据不具备任何价值,仅仅为文章演示。

4.8、测验方案创立完结

记得点保存,这时分会生成一个pem的文件

五、履行测验方案

前面咱们说过,履行测验方案不能用GUI,需求用指令行来履行。

(超详细)通过Jemeter进行压力测试
我这儿履行的指令为:

jmeter -n -t testplan/RedisLock.jmx -l testplan/result/result.txt -e -o testplan/webreport
  • testplan/RedisLock.jmx 为测验方案文件途径
  • testplan/result/result.txt 为测验成果文件途径
  • testplan/webreport 为web报告保存途径。 Web报告如下:

(超详细)通过Jemeter进行压力测试

六.写在最后

线程数量和循环次数将会影响最终的测验报告,假如服务器资源有限,留意选用阶梯测验。我下载的5.5版别的jemeter没有阶梯测验的插件,挑选5.4.1的有,这儿需求留意一下。

温馨提示

对于压测,需求采纳的战略是阶梯压测,然后让他继续一段时刻,看看所测验的服务是否滑润且正常运转。 这儿是”安前码后”,一个收拾有用干货的号,看到这儿,觉得文章用心收拾的话,给个三连哦!!

(超详细)通过Jemeter进行压力测试