Jmeter压测手册:脚本配置、服务器环境搭建与运行

本文记录了我在新公司的首次压测遇到的一些问题以及解决方案。公司服务部署在国外,网络延迟导致的压不上去,需要本地调试脚本,然后用国外服务器压测的过程。同时记录了过程中遇到的一些问题,特别是Jmeter本身占用CPU资源,需要修改参数。

安装包

Jmeter包,已调好配置参数:

通过网盘分享的文件:apache-jmeter-5.6.3.zip

链接: https://pan.baidu.com/s/1-L6ASOdnBwvWi5_gpAW1gw?pwd=4uce 提取码: 4uce

--来自百度网盘超级会员v3的分享

脚本配置

1、新建线程组

2、脚本配置

新加HTTP请求

脚本配置

添加请求头

添加参数化

注意用相对路径,因为要拷贝到远程机器运行,绝对路径会找不到文件,运行不起来,还没报错。

3、压测报表

虚拟机配置

安装Java环境

1、先从官网下载jdk1.8.0_131.tar.gz,再从本地上传到Linux服务器

2、解压:tar -xzf jdk1.8.0_131.tar.gz,生成文件夹 jdk1.8.0_131

jdk存放目录:/home/azureuser/jmeter/jdk1.8.0_451

修改配置:vi /etc/profile

export JAVA_HOME=/home/azureuser/jmeter/jdk1.8.0_451

export PATH=JAVA_HOME/bin:PATH

加载配置 : source /etc/profile

查看是否安装成功:java -version

安装Jmeter

1、本地Jmeter打包。最好用跟本机一样的jmeter,不会出现插件不一致等导致的运行不起来

2、传到服务器

3、解压缩

tar -xvzf apache-jmeter-5.6.3.tgz

unzip

jmeter路径:/home/azureuser/jmeter/apache-jmeter-5.6.3

4、配置Jmeter环境变量。

vi /etc/profile,再添加如下变量

export JMETER_HOME=/home/azureuser/jmeter/apache-jmeter-5.6.3

export CLASSPATH=JMETER_HOME/lib/ext/ApacheJMeter_core.jar:JMETER_HOME/lib/jorphan.jar:

export PATH=JMETER_HOME/bin:JAVA_HOME/bin:$PATH

5、source /etc/profile (让配置文件立马生效)

6、查看是否安装成功,执行命令:jmeter -v

设置Jmeter启动内存

1.创建setenv.sh文件

在jmeter的bin目录下新建setenv.sh配置文件,在文件中配置jvm参数

export JVM_ARGS="-Xms4096m -Xmx4096m -XX:MaxMetaspaceSize=2048m"

大小参考本机可用内存,50%-70%之间

修改Jmeter参数

1、system.properties

增加mode=StrippedBatch

2、解决timewait问题

修改所有jmeter主机-负载机配置 使用httpclient4客户端

jmeter.properties

httpclient4.time_to_live=300000

httpclient4.validate_after_inactivity=1000

httpclient4.request_sent_retry_enabled=true

httpclient4.retrycount=2

hc.parameters.file=hc.parameters

httpclient.reset_state_on_thread_group_iteration=false

3、hc.parameters

http.connection.stalecheck$Boolean=true

4、客户端配置

运行jmeter

jmx文件单独放/home/azureuser/jmeter/jmx

jmeter安装于/home/azureuser/jmeter/apache-jmeter-5.6.3

本地文件上传到服务器,注意使用到的数据文件也要传过去,可以整个目录传(使用的ssh软件:electerm)

进入 jmx所在目录

jmeter -n -t hawbTracks.jmx -l result_hawbTracks_05310813.jtl -L DEBUG

jmeter -n -t hawbTracks.jmx -l result_hawbTracks_05312207.jtl -e -o ./result 生成html报告,result 目前提前清空

jmeter -n -t hawbTracks.jmx -l result_hawbTracks_06031927.jtl -e -o ./06031927_result

监控查看

1、压测指标QPS、RT。关注响应时间增加明显,QPS增量低,无需再加QPS,防止压挂服务器。

2、服务器情况查看

机器情况以Grafa查看

服务qps、响应,以及响应时间明细用skywalking查看

3、从网关层压测,所以网关服务器性能也需要关注下

4、压测服务器的性能也需关注下。可以开多个窗口,top命令看服务器情况

常见命令:

top:本机性能指标查看,1 - 每个cpu指标查看,MiB Mem-内存查看

ps -ef pid : 进程查看

报告查看

1、报告回传到本机

2、打开jtl文件

3、result中index.html浏览器打开

使用jmeter -n -t hawbTracks.jmx -l result_hawbTracks_05312207.jtl -e -o ./result 生成html报告,可以直接查看

问题记录

1、网络损耗

本地压测由于是中国网段压测美国网段,网络损耗巨大。对比如下:

本地压测情况,3个并发

服务器压测情况,压测服务器与被压测服务器都在美国

对比发现,网络损耗在600ms。所以需要使用同区域压测服务器来压,得到真实的性能情况。

2、Jmeter中响应时间疑惑

现象:本地Jmeter压测时间稳定在600ms左右,但是POSTMAN是偶尔600ms多,多数在200ms。

原因:Postman接口发送使用的端口,会有链接缓存,不会每次新建连接。现象上佐证:隔段时间请求是600+ms,不间隔再次访问是200ms。

3、服务端Jmeter运行报错,jp@gc组件找不到

原因:运行的官网下载的jmeter,里面没有相关组件导致

4、服务端Jmeter运行无数据生成,无报错,直接停止了

配置的脚本的,csv文件配置的windows中绝对路径,拷贝到linux上,找不到文件,导致运行不起来。

5、压测机本身性能问题,导致QPS上不去

1、关闭部分java程序。 ps -ef pid查看进程信息

2、增加jmeter内存大小

3、多台机器压测

4、修改jmeter配置 - 有用

相关推荐
软件测试大叔2 天前
arm服务器运行Jmeter报错问题UseG1GC
jmeter
海姐软件测试3 天前
使用Jmeter做功能测试有哪些优点?
功能测试·jmeter
明月与玄武5 天前
JMeter 实现 MQTT 协议压力测试 !
jmeter·压力测试·jmeter实现 mqtt协议
文小大5 天前
五、jmeter脚本参数化
jmeter
程序员的世界你不懂6 天前
Jmeter(四) - 如何在jmeter中创建网络测试计划
jmeter
1.01^10007 天前
[5-02-04].第01节:Jmeter环境搭建:
jmeter
太阳之神aboluo7 天前
压测软件-Jmeter
java·运维·jmeter
三千花灯7 天前
jmeter之导出接口
jmeter
文人sec7 天前
性能测试-jmeter实战2
jmeter