• 首页 > 快讯>正文
  • 环信学院|基于Jmeter的百万级tps性能测试实践

  • 2022-11-16 16:13:48
  •   如何对系统的承载能力和响应时间做出准确的评估,为资源的合理配置及优化提供依据,性能测试就成了必不可少的测试手段,本文会给读者推荐一款业界占有率最高的一款性能测试工具——Jmeter。

      本文作者朱凯是环信测试主管,有近20年测试工作经验,服务过多种行业领域。擅长性能测试,有多个大型项目的性能测试经验。

      互联网时代,因为超过系统承载能力而出现的宕机情况,时有发生,不仅给用户带来极为不好的体验,也让互联网厂商蒙受了巨大的损失。

      根据Aberdeen Group的研究报告,对于Web网站,1秒的页面加载延迟相当于少了11%的PV(page view 打开页面的次数),相当于降低了16%的顾客满意度。

      Compuware公司分析了超过150个网站和150万个浏览页面,发现页面响应时间从2秒增长到10秒,会导致38%的页面浏览放弃率。

      如何对系统的承载能力和响应时间做出准确的评估,为资源的合理配置及优化提供依据,性能测试就成了必不可少的测试手段,本文会给读者推荐一款业界占有率最高的一款性能测试工具——Jmeter。

      下面会从成本、报表系统和扩展性三个维度来介绍下业界最高占有率的性能测试工具Jmeter。

      1、成本

      费用成本

      Jmeter开源,免费,工具费用成本为0。

      使用成本

      部署成本非常低,仅依赖jdk,jmeter包解压即可使用,真正做到开箱即用。

      脚本编写门槛很低,Jmeter有UI操作界面,方便快速,常规场景0代码即可使用。

    1.jpg

      丰富的组件满足不同的场景需求:

    2.jpg

      各种好用的函数能让数据生成更加快捷:

    3.jpg

    广泛的协议支持满足绝大多数性能测试场景:

     

      Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET,...)

      SOAP / REST Webservices

      Websocket

      MQTT

      XMPP

      FTP

      Database via JDBC

      LDAP

      Message-oriented Middleware (MOM) via JMS

      Mail - SMTP(S), POP3(S) and IMAP(S)

      Native commands or shell scripts

      TCP

      Java Objects

      2、报表系统

      Jmeter能生成丰富的html格式报表系统,从不同维度对性能测试结果进行分析,以下是部分Jmeter报告的示例图。

      报告的基本信息,包括执行时间、应用性能指数和请求概要信息等:

    4.jpg

      统计概要信息,包括请求名、请求数量、成功数量、错误率、平均响应时间、吞吐率(tps)和网络流量等:

    5.jpg

      错误概要信息,包括错误类型、错误数量、错误类型占比和错误数量百分比等:

    6..jpg

      Top 5错误概要信息,包括错误请求名、请求数量、top 5错误请求类型和top 5错误请求数量等:

    7.jpg

      整个测试运行期间的响应时间图,包括所有请求的响应时间图:

    d727aba0bb8dbcaba0b87bff3fffaabc.jpg

      整个测试运行期间的响应时间分布百分比图,包括P90、P95、P99、Max和Min:

    2966e6c6ff32d2066e14663c84fd8ede.jpg

      整个测试运行期间的活动线程数:

    10.jpg

      整个测试运行期间的吞吐字节数:

    11.jpg

      Jmeter如需生成报告,需先记录日志文件,此日志通常会非常大,注意将该文件生成到磁盘空间足够的区域。

      Jmeter生成报告前会在命令执行目录生成一个temp文件夹,该文件夹空间占用会非常大,注意在磁盘空间足够的区域执行命令。

      3、软件扩展性

      Jmeter本身是100%Java实现,扩展非常方便。可以自己开发各种协议包、逻辑组件等。

      另外不得不提的就是Jmeter本身的社区支持,plugins manager,目前已有100+插件,且还在不断快速增加中,插件遍布jmeter的各种组件类型,极大的方便了使用者的快速组合出各种性能测试场景。

      plugins manager的安装和使用也非常的容易。从https://jmeter-plugins.org/install/Install/页面下载jmeter-plugins-manager-1.7.jar,放到jmeter的lib/ext目录后重启jmeter,即可从菜单中找到插件中心:

    12.jpg

    13.jpg

      横向扩展性

      当我们要进行百万级TPS性能测试时,单个实例难免力不从心,这个时候,Jmeter的分布式测试模式能很好的解决这个问题。Jmeter的分布式工作模式为一master,多slave模式,如下图:

    14.jpg

      性能测试过程启动后,master机器下发脚本到各slave机,由slave机对目标机器发起请求,如下图:

    15.jpg

      单个jmeter实例启用的线程数建议1000-2000之间,太多可能会导致jmeter自身性能下降。

      分布式测试时,脚本由master机器下午到各slave机,所以slave机并不需要放置测试脚本;测试脚本中如果有读取本地csv的动作,会从各slave机本地读取,为了降低部署成本,分布式测试时,不建议有读取本地文件的行为。

      分布式测试时,在master机器上执行脚本的过程如果中断测试,会导致第二次测试无法连接到slave机器,此情况需要重启所有slave机器。

      4、一个小示例

      最后,让我们用一个简单的例子来领略Jmeter构建性能测试方案的快捷性:

      1.在Test Plan下添加一个Thread Group并配置好参数

    16.jpg

    17.jpg

      2.在Thread Group下添加HTTP Request并配置好参数

    20.jpg

      3.在Thread Group下添加HTTP Header Manager并配置好参数

    21.jpg

    22.jpg

    4.在Thread Group下添加View Results Tree和Summary Report并启动测试

     

    23.jpg

      5.查看View Results Tree中的详细信息和Summary Report中的汇总信息

    24.jpg

    25.jpg

      GUI模式通常用来创建和调试脚本,正式做性能测试推荐用命令行来测试:jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]


    免责声明:科技狗对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。 本网站转载图片、文字之类版权申明,本网站无法鉴别所上传图片或文字的知识版权,如果侵犯,请及时通知我们,本网站将在第一时间及时删除:yzl_300@126.com

    延伸阅读:

  • 武汉:五一未至旅游先火 麦德龙自有品牌悄然热
  • 网御星云荣膺行业信息化数字政务创新成果奖
  • 中企通信数据科学与创新团队 荣获“第三届阿
  • 科技与自然共生长 COLMO携例外开启高端衣物
  • 助力构建全民终身学习型社会 量子之歌领跑成
  • 双“展”齐上!中广亮相山西供热展、河北教装
  • 沈阳年轻人消费更理性 麦德龙自有产品受认可
  • 第五届中国金融年度品牌案例大赛圆满落幕, 联
  • 智林机器人亮相第32届广州国际大健康产业博览会
  • 行车记录仪存储卡如何选 耐久防护容量速度都重要
  • 吸尘拖地两用 扫拖一体机会是扫地机器人发展方向
  • 500GB和1TB不同容量的NVMe固态硬盘:性能相差为什么
  • ChatGPT4.0 来了,远传科技如何助推场景化落地
  • Yeelight易来推出子品牌“凌动”,全面渗透用户智能
  • 讲真周年庆典活动在京举办 商羽荣获年度优秀讲师
  • 光启,来自未来 改变世界------光启技术研究报告
  • 主编推荐 ...
  • 东来也孙道军:不是每一只国潮鹅,都可以叫“鹅小天”...

  • TCL携智慧科技产品重磅亮相,UDE成“最佳Show场”...

  • 美的洗衣机与联合利华达成战略合作 共领未来家庭洗护新生...

  • 今日焦点
    滚动新闻 ...
    新闻排行 ...
    关于我们 |   科技狗简介 |   法律声明 |   广告刊例 |   联系我们
    © 2014-2020 科技狗版权所有   E-mail:yzl_300@126.com
    科技狗 |  techdog.cn  |   粤ICP备2020076861号