本文共 1997 字,大约阅读时间需要 6 分钟。
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}doneecho "自动化压测全部结束"
直接执行脚本
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之间
转载地址:http://huzgf.baihongyu.com/