压力测试Jmeter的简单使用

前言

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

1、Jmeter的安装

官网下载地址

  • 我这里是mac系统所以选择tgz,Windows选择zip下载。5.3的JDK版本要求是8以上。

image-20201120202043195

  • Binaries:二进制版,即已经编译好、可直接执行;
  • Source:源代码版,需要自己编译;

2、启动Jmeter

  • 解压完成后进入bin目录使用命令sh jmeter启动,Windows点击Jmeter.bat
  • 进入图形化界面后,可以设置中文

jmeter-setlanguage

  • 为了方便启动,设置环境变量,以后就不用每次都进入到Jmeter目录启动。

    以下是macos配置,Windows操作差不多,也是在系统变量上添加对应的路径。

    1. 通过vim ~/.bash_profile添加以下内容。(Jmeter对应的路径)

      export JMETER_HOME=/Users/des/apache-jmeter-5.3
      export PATH=$JAVA_HOME/bin:$PATH:.:$JMETER_HOME/bin:$PATH
      export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar
      
    2. 保存退出。source ~/.bash_profile 刷新配置,然后在终端(任意目录)输入jmeter,即可启动JMeter。

3、Jmeter的使用

1. 对docker容器 nginx进行压测

1.1 新建一个线程组

1.2 添加一个取样器,http请求。

1.3 添加几个监听器,观察压测过程。

一般图中红框的三个就够用了。其他有需要可以自己琢磨~

1.4 设置请求地址

jmeter-example4

1.5 启动线程数,勾选了循环次数需要手动暂停。

运行出现会出现提示让你先保存。

1.6 压测结果

察看结果树

最后出现错误是因为,手动关闭导致请求已发出但是socket已经关闭。

汇总报告

  • 样本:236754次请求,也就是发出请求数。
  • 平均值:平均响应时间(单位:ms)。
  • 最小\大值:最小\大响应时间。
  • 标准偏差:反映样本跟平均值的反差程度,数值越大越不稳定.
  • 吞吐量:每秒的并发访问数量。

聚合报告

  • 中位数,也就是 50% 用户的响应时间。
  • xx百分位:对应90%、95%、99%用户的响应时间。

2. 压测微服务项目

压测内容(稳定时数据)压测线程数吞吐量/s90%响应时间99%响应时间
Nginx507530737
Gateway5025387314
简单服务5015585419
首页渲染(关模板缓存)5096643876
三级分类数据获取503118302911
Gateway+简单服务50104086159
全链路5020330924911

总结

  • 中间件越多,性能损耗越大,大多都损失在网络交互了。
  • 硬件设施:可能是虚拟机装在外接机械硬盘导致io传输慢
  • 业务优化:
    • DB
    • 模板的渲染速度
    • 静态资源

附录:

jvisualvm:JDK自带JVM监控工具

命令行窗口输入jvisualvm启动

更新时间:2020-11-22 09:01:08

本文由 阿俊 创作,如果您觉得本文不错,请随意赞赏
采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
原文链接:https://jinterest.cn/archives/jmeter
最后更新:2020-11-22 09:01:08

评论

Your browser is out of date!

Update your browser to view this website correctly. Update my browser now

×