JMeter压测实战(二)- 性能监控体系

目录

  • 性能监控平台组成
  • 自动化压测
  • 压测实施

一、性能监控平台组成

性能监控平台好处

  • JMeter原生测试报告带来的“痛苦”
    • 不具备实时性
    • 报告中的数据是测试时间段内的平均值
    • 长相问题
  • 性能监控平台的优势
    • 实时展示JMeter压测数据
    • 数据范围可选
    • 界面更友好

JMeter性能监控平台组成

  • 参考文章:https://www.jianshu.com/p/476ba7703409
  • JMeter:压测工具,产生压测数据
  • InfluxDB:开源时序数据库,特别适合用于处理和分析资源监控数据,用于存储压测数据
  • Grafana:度量分析与可视化图标展示工具,可以支持不用种类的数据源,用于将存储于InfluxDB中的数据以图表的形式展示出来

JMeter性能监控平台准备

  • 部署方法:Docker 部署
  • 下载对应docker镜像,启动container实例


    image.png
  • 压测目标:美餐网
  • 运行验证数据传递的正确性
  • 验证监控环境运行正常
  • 调试ok之后再开始实施压力测试
  • Demo:启动性能监控平台组件并验证系统的正确性


    image.png
  • JMeter添加后端监听器


    image.png
  • 压测后数据监控


    image.png

Tips:如果性能监控平台与JMeter报告结果有差异,要以JMeter的结果为准,因为性能监控平台本身也会消耗资源,而且不是实时刷新。


二、自动化压测

  • 为啥要自动化压测呢?
    • 手动逐步加压
    • 需要人肉改并发数,然后等待完成
    • 烦!!!!!
  • 所以,制定好策略,让程序自动加压,自动等待;完成后坐收报告
  • 计算机努力的干活,我去做更重要的事情
  • 希望测试生涯由此变得美好一些

实现思路

  • JMeter脚本( .jmx文件) - 压测逻辑
  • Shell - 控制逻辑
  • 不能绕开麻烦,并发数的更改 - 想想Linux的三剑客之一
  • JMeter静默运行 - 脱离UI限制,使得自动化运行更稳定

JMeter静默压测

  • 静默 -> 脱离UI运行JMeter压测
  • 好处:命令运行更容易“搞事情”
  • 命令格式:jmeter -n -t $jmx_file-l $jtl_file
  • jmx JMeter压测程序脚本文件,压测控制过程记录在jmx文件中
  • jtl文件是JMeter压测请求响应数据的原始文件

自动生成Web版压测报告

  • 实施静默压测之后,通过命令直接生成对应的html压测报告
  • 过程:jfl原始数据 -> html压测报告
  • 好处:快捷、省事、节约时间
  • 命令格式:jmeter -g $jtl_file -o $web_report_folder
  • 可以与静默压测命令整合:jmeter -n -t $jmx_file -l $jtl_file -o $web_report_folder

程序流程图

image.png

压测脚本

  • 源码解读 - Demo

  • 自动化源码位置:jmx/auto_stress_emenu.sh

  • JMeter中修改并发数为脚本中的变量


    image.png
  • 自动化压测脚本 auto_stress_emenu.sh

#!/usr/bin/env bash

# 压测脚本模板中设定的压测时间应为60秒
export jmx_template="emenu"
export suffix=".jmx"
export jmx_template_filename="${jmx_template}${suffix}"
# uname命令可以输出系统名称,MacOS为Darwin,Linux为Linux
export os_type=`uname`

# 需要在系统变量中定义jmeter根目录的位置,如下
# export jmeter_path="/your jmeter path/"

echo "美餐网自动化压测全部开始"
# 压测并发数列表
thread_number_array=(10 20 30 40 50 60 70)
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}"
    
    # 判断操作系统,如果是Darwin即MacOS系统,否则为Linux系统
    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}
done
echo "美餐网自动化压测全部结束"

压测测试

  • 终端输入:sh auto_stress_emenu.sh

    image.png

  • grafana监控


    image.png

查看报告

  • 报告路径


    image.png
  • 报告


    image.png

    image.png

Tips:被压程序和压测脚本运行最好是分别两个主机上,因为JMeter运行也会消耗资源。而且两台主机最好在同一机房内。

三、实施压测

压测实施计划

  • 制定压测策略不同的并发数:10,20,50,100,200,400,.....

  • 单个并发数压测时长:1分钟

  • 参考压测报告,记录结果运行自动压测简化操作

  • 测试期望结果

    • 验证能够支撑多大并发数,峰值数
    • 验证错误率,定义可接受范围,<=0.1% or <=0.5% or must = 0%
  • 系统性能点


    image.png

压测实施计划

  • Demo:运行压测,收集数据
  • 并发数设定:10,20,30,40,50,
  • 分析合理最大并发数,使用合理最大并发数,进行长时压测验证结论
  • 注意事项:
    • 如果高并发出错率偏高,可以尝试降低并发数,以获取更合理的结果
    • 实际工作过程中,发压机与被压测应用需要运行在不同机器上

压测实施

  • 通过对比并发数与流量还有错误率的关系,找到一个最合理的系统可支撑最大并发数
  • 可以先把并发数往大增加,压出问题之后,再逐步减少
  • 找到系统可以支持的最合理最大并发数
  • Demo-逐步增加并发数的压测过程,压测报告解读,记录数据分析结果

压测结果

image.png

image.png
  • 分析结果,最优并发数在10-20之间,然后再细化脚本中的并发数为(10 12 14 16 18)

小结

  • 运行自动压测,实施压测运行
  • 并发数设定原则:从小->大,先粗粒度,再细化
  • 应用系统的流量与并发数的对应关系
  • 错误率与并发数的关系
  • 系统合理能力的判断与验证
  • 性能监控压测运行状态
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,658评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,482评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,213评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,395评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,487评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,523评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,525评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,300评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,753评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,048评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,223评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,905评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,541评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,168评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,417评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,094评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,088评论 2 352

推荐阅读更多精彩内容