jmeter性能测试部署(Linux)


Linuxjmeter性能测试

1.1 环境配置

1.1.1 环境准备

整个测试过程中,测试环境为Windows系统和linux系统两部分,Windows环境下调试和配置需要运行的jmeter脚本,在linux系统中开始性能测试过程。

Linux安装CentOS 7系统,并在系统中安装好java环境,此次测试中,配置的java为java 1.8.0_211。

1.1.2 测试软件准备

测试中准备apache-jmeter-5.0版本jmeter进行测试。

为保证脚本设置和脚本运行时没有差异,Windows和Linux环境使用同一个版本的jmeter,也避免测试过程中因测试工具版本不兼容,出现异常。

1.2 jmeter集群配置

1.2.1 单台jmeter设置

jmeter包拷贝至linux指定位置并解压(tar –zxvf 压缩包名称),开始配置jmeter。

1.配置环境变量

打开/etc/profile,进入文件最后添加jmeter环境配置,如下图红色横线所示,路径为Jmeter包存放位置。(可进入jmeter的bin目录下,输入pwd命令查看对应位置)

 

配置完成后,保存此配置文件,执行命令source /etc/profile让配置生效。此时在输入命令:jmeter –v可查看对应的jmeter版本信息。

Jmeter要配环境变量,这样不用手动起server,如果不配置环境变量,每次启动时都需要进入到对应的bin目录下进行操作。

2. Jmeter内存调优

压测过程中jmeter报内存溢出(报错:java.lang.OutOfMemoryError:gc overhead limit exceeded),或在测试过程中因jmeter自身内存限制,影响测试结果,在测试前可调整jmeter内存。

查看bin目录下jmeter文件(此次使用的版本,内存设置在jmeter文件中,也有在jmeter.sh/jmeter.bat文件中),修改HEAP=-Xms512m -Xmx1024m对应数值。此处对应的参数意义为:

-Xms:初始值

-Xmx:最大值

-Xmn:最小值

Heap Size的设置不宜太小,也不宜太大。若设置太小程序的响应速度会变慢了,因为GC占用了更多的时间,而应用分配到的执行时间较少。太大也会造成空间的浪费,而且也会影响其他程序的正常运行,Heap Size 最大最好不要超过可用物理内存的80%。建议将-Xms和-Xmx选项设置为相同。

根据实际情况,在此次过程中将此数值设置为4096m。

 

1.2.2 Jmeter集群配置

Jmeter 支持分布式压测,将需要模拟的大量并发用户数分发到多台压力机,使 Jmeter 拥有更大的负载量,满足真实业务场景(高并发场景)。

Jmeter分布式配置主要分为master端修改和slave端修改。设置前请确认,master端和slave端要ping通。

先对slave端进行配置。

1.进入 jmeter.properties文件,查找并取消这段配置的注释 server.rmi.ssl.disable=false ,false改成true。

2.进入jmeter-server文件(也有版本在jmeter.properties文件中),查找 jmeter-server -Djava.rmi.server.hostname=xx.xx.xx.xx 设置slave节点IP(即当前slave机ip),这里设置的IP也是启动slave上的jmeter服务的IP,如果启动时显示的信息与此不符,请确认是否是多网卡或设置虚拟IP的原因。

3. 当默认的1099端口被占用或需要修改对应端口值时,进入 jmeter.properties文件,查找server.rmi.localport和server_port,并取消注释,将值修改为1099,固定分布式启动监听端口。此次测试将端口都设置在了1099.

 

Slave端设置完成后,在master端添加已设置好的slave机IP和端口信息。

进入master机的jmeter.properties文件,查找修改remote_hosts=ip:port:改成要启动的Linux机的ip以及端口。

例如:

多个slave机之间,使用逗号分隔开。

设置完成后,可能会遇到打不开的权限问题,此时:chmod 777 filename ,更改文件权限,然后再重新就可以打开了

1.2.3 Jmeter集群启动

设置完slave机和master机,先在slave机启动服务。

执行./jmeter-server -Djava.rmi.sever.hostname=IP(slave机IP)完成slave机启动。如下,启动10.30.20.71的Slave机,当出现以下提示信息时,slave机正常启动,等待master机的调用。

slave机启动后,master机执行语句:./bin/jmeter.sh -n -t ./xxxx.jmx -R 10.30.20.71  -l ./result/result.jtl -e -o ./report 即可调用此slave机。

 

master机启动slave机进行测试时,slave机下出现提示信息:

master机出现信息和执行数据:

脚本运行完成时,master机同样出现tydying up…脚本执行完成,开始整理报告数据,出现…end of run报告整理完成。

在脚本执行完成时,slave出现下列提示信息:

Finishing the test on host 10.30.20.71 @ Mon Oct 19 18:26:23 CST 2020 (1603103183123)。

1.3 Jmeter脚本设置

此次设置,为满足测试要求,使用Stepping Thread Group插件进行设置。安装好此插件,并对此插件进行设置,每一项设置参数含义如下:

 

This group will start 100 threads:设置线程组启动的线程总数为100个;

First,wait for N seconds:启动第一个线程之前,需要等待N秒;

 

Then start N threads:设置最开始时启动N个线程;

 

Next,add 10 threads every 30 seconds,using ramp-up 5 seconds:每隔30秒,启动10个线程,10个线程在5秒内启动完成;

 

Then hold load for 60 seconds:启动的线程总数达到最大值之后,再持续运行60秒;

 

Finally,stop 5 threads every 1 seconds:每秒停止5个线程;

此插件按一般线程组一样进行接口和控制器设置,开始脚本调试和设置,设置后调整上述参数即可开始测试。

1.4 Jmeter测试

再运行脚本之前,检查文件路径,需要再jmeter下建立一个report和一个result路径,以便在测试过程中指定测试结果和测试报告存放地址。每次进行测试时,这两个路径下应该为空,否则不能正常进行测试。

将设置好的脚本,xxx.jmx文件,传到已配置的linux环境jmeter目录下,执行命令语句。

Jmeter官网用户手册介绍如下:

 

-h, –help -> prints usage information and exit

-n, –nongui -> run JMeter in nongui mode

-t, –testfile -> the jmeter test(.jmx) file to run

-l, –logfile -> the file to log samples to

-r, –runremote -> Start remote servers (as defined in remote_hosts)

-H, –proxyHost -> Set a proxy server for JMeter to use

-P, –proxyPort -> Set proxy server port for JMeter to use

 

具体的含义如下:

-h 帮助 -> 打印出有用的信息并退出;

 

-n 非 GUI 模式 -> 在非 GUI 模式下运行 Jmeter;

 

-t 测试文件 -> 要运行的 JMeter 测试脚本文件;

 

-l 日志文件 -> 记录结果的文件;

 

-r 远程执行 -> 在Jmter.properties文件中指定的所有远程服务器;

 

-H 代理主机 -> 设置 JMeter 使用的代理主机;

 

-P 代理端口 -> 设置 JMeter 使用的代理主机的端口号;

 

根据实际情况选择,执行语句时使用的命令。

1.5 Jmeter报告查看

当测试完成之后,自动生成报告,报告指定在report路径下,测试结果保存在result路径下。此时将report整个打包tar –cvf report.rar report),打包完成之后将打包文件传到windows环境中进行查看。