jmeter性能测试部署(Linux)
1 Linux下jmeter性能测试
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⽂件,查并取消这段配置的注释 i.ssl.disable=false ,false改成true。
2.进⼊jmeter-server⽂件(也有版本在jmeter.properties⽂件中),查 jmeter-server -i.server.xx ,设
置slave节点IP(即当前slave机ip),这⾥设置的IP也是启动slave上的jmeter服务的IP,如果启动时显⽰的信息与此不符,请确认是否是多⽹卡或设置虚拟IP的原因。
3. 当默认的1099端⼝被占⽤或需要修改对应端⼝值时,进⼊ jmeter.properties⽂件,查i.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 -i.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 <argument> -> the jmeter test(.jmx) file to run
-l, –logfile <argument> -> the file to log samples to
-董洁梁朝伟
r, –runremote -> Start remote servers (as defined in remote_hosts)
-H, –proxyHost <argument> -> Set a proxy server for JMeter to use
-P, –proxyPort <argument> -> 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环境中进⾏查看。