Jmeter 制定自动压测

本文介绍了如何使用JMeter进行静默压测,并通过自动化脚本控制并发线程数进行性能测试。在Linux环境中,由于Java请求在JMeter线程外启动额外线程,导致JVM无法正常退出,解决方法是设置jmeterengine.force.system.exit=true。通过分析不同并发用户数(10, 20, 30, 40, 100, 200, 300, 400)的压测结果,发现最适宜的用户数在200-300之间,超过这个范围错误率会上升。

jmeter静默压测

    # JMeter 静默压测
    ${jmeter_path}/bin/jmeter -n -t ${jmx_filename} -l ${jtl_filename}

    # 生成Web压测报告
    ${jmeter_path}/bin/jmeter -g ${jtl_filename} -e -o ${web_report_path_name}

Linux  启动jmeter出现错误:

当使用jmeter 非GUI模式 对java请求进行性能测试时,在执行结束时会报错:

The JVM should have exitted but did not.

The following non-daemon threads are still running (DestroyJavaVM is OK):

导致这种错误原因

在执行java请求时会在jmeter线程之外,另外启动java线程,导致在脚本执行结束时JVM无法退出。

若要避免这种现象,需要修改bin/jmeter.properties 中的jmeterengine.force.system.exit=true

 

linux直接使用jmeter命令 需要配置jmeter环境变量  

自动压测:

编写压测脚本,让脚本自动执行 实现线程数的压测

实现思路
  jmeter 脚本  压测逻辑
  shell  控制逻辑
  并发数更改(linux 三剑客)
  Jmeter静默运行 脱离UI限制  使得自动化运行更稳定

# 压测脚本模板中设定的压测时间应为60秒
export jmx_template="order_auto"
export suffix=".jmx"
export jmx_template_filename="${jmx_template}${suffix}"
export os_type=`uname`

# 需要在系统变量中定义jmeter根目录的位置,如下
export jmeter_path="/usr/local/appach/jmeter/apache-jmeter-5.3"

echo "自动化压测开始"

# 压测并发数列表
thread_number_array=(10 20 30 40)
for num in "${thread_number_array[@]}"
do
    # 生成对应压测线程的jmx文件
    export jmx_filename="${jmx_template}_${num}${suffix}"
    export jtl_filename="test_${num}.jtl"
    export web_report_path_name="web_${num}"

    rm -f ${jmx_filename} ${jtl_filename}
    rm -rf ${web_report_path_name}

    cp ${jmx_template_filename} ${jmx_filename}
    echo "生成jmx压测脚本 ${jmx_filename}"

    if [[ "${os_type}" == "Darwin" ]]; then
        sed -i "" "s/thread_num/${num}/g" ${jmx_filename}
    else
        sed -i "s/thread_num/${num}/g" ${jmx_filename}
    fi

    # JMeter 静默压测
    ${jmeter_path}/bin/jmeter -n -t ${jmx_filename} -l ${jtl_filename}

    # 生成Web压测报告
    ${jmeter_path}/bin/jmeter -g ${jtl_filename} -e -o ${web_report_path_name}

    rm -f ${jmx_filename} ${jtl_filename}
done
echo "自动化压测全部结束"

直接执行脚本

 sudo ./auto_press.sh 

压测结果如下:

测试数分别是10 20 30 40

拉取测试报告到本地,然后查看压测报告:

用户并发数为10时:

用户数为20时

用户并发数为30时:

用户并发数为40时:

 

可以看出在用户压测数为10 20 30 40 时,都没有出现错误,且流量是在增加的

 

接下来增加压测数据:

在用户数为100  200 300 400  时压测结果如下:

压测数100时:

压测数200

压测数300时:

 压测数400时:

 可以看出压测数为300时已经出现了错误,再增加用户数,错误率继续增加,所有可以找到最适宜的用户数在200-300之间

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员路同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值