原文连接:使用 JMeter 进行压力测试

一.前言
压力测试是每一个Web应用程序上线之前都需要做的一个测试,他可以帮助我们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率;预估系统的承载能力,使我们能根据其做出一些应对措施。所以压力测试是一个非常重要的步骤,下面我带大家来使用一款压力测试工具JMeter。二.关于JMeter
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
Apache jmeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。
官网:http://jmeter.apache.org/download_jmeter.cgi
这里我选用了 4.0 版本的二进制包:http://mirror.bit.edu.cn/apache//jmeter/binaries/apache-jmeter-4.0.zip
更多内容介绍 https://baike.baidu.com/item/Jmeter/3104456三.准备工作
因为JMeter是使用JAVA写的,所以使用JMeter之前,先安装JAVA环境,本文就不讲不如安装JAVA环境了。.
JAVA环境变量配置:https://jingyan.baidu.com/article/fd8044fa2c22f15031137a2a.html
解压下载的二进制包,进入bin目录,使用jmeter.bat启动程序。
启动之后会有两个窗口,一个cmd窗口,一个JMeter的 GUI。前面不要忽略CMD窗口的提示信息:

JMeter:

CMD窗口的提示信息
================================================================================ Don't use GUI mode for load testing !, only for Test creation and Test debugging. For load testing, use NON GUI Mode: jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder] & increase Java Heap to meet your test requirements: Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file Check : https://jmeter.apache.org/usermanual/best-practices.html ================================================================================
上面的意思就是:不要使用GUI运行压力测试,GUI仅用于压力测试的创建和调试;执行压力测试请不要使用GUI。使用下面的命令来执行测试:
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
并且修改JMeter批处理文件的环境变量:HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"更改语言为中文
官方默认为我们提供了简体中文。通过 【Options】->【Choose Language】变更为简体中文

四.创建测试1.创建线程组
在“测试计划”上右键 【添加】-->【Threads(Users)】-->【线程组】。

设置线程数和循环次数。我这里设置线程数为500,循环一次。

2.配置元件
在我们刚刚创建的线程组上右键 【添加】-->【配置元件】-->【HTTP请求默认值】。

配置我们需要进行测试的程序协议、地址和端口

当所有的接口测试的访问域名和端口都一样时,可以使用该元件,一旦服务器地址变更,只需要修改请求默认值即可。3.构造HTTP请求
在“线程组”右键 【添加-】->【samlper】-->【HTTP 请求】设置我们需要测试的API的请求路径和数据。我这里是用的json

4.添加HTTP请求头
在我们刚刚创建的线程组上右键 【添加】-->【配置元件】-->【HTTP信息头管理器】。
因为我要传输的数据为json,所以设置一个 Content-Type:application/json

5.添加断言
在我们刚刚创建的线程组上右键 【添加】-->【断言】-->【响应断言】。
根据响应的数据来判断请求是否正常。我在这里只判断的响应代码是否为200。还可以配置错误信息

6.添加察看结果树
在我们刚刚创建的线程组上右键 【添加】-->【监听器】-->【察看结果树】。
直接添加,然后点击运行按钮就可以看到结果了。

7.添加Summary Report
在我们刚刚创建的线程组上右键 【添加】-->【监听器】-->【Summary Report】。
直接添加,然后点击运行按钮就可以看到结果了。

为了不引起不必要的争论,隐藏了TPS。此数据不具备任何价值,仅仅为文章演示。8.测试计划创建完成
记得点保存。五.执行测试计划
前面我们说过,执行测试计划不能用GUI,需要用命令行来执行。

我这里执行的命令为:
jmeter -n -t testplan/RedisLock.jmx -l testplan/result/result.txt -e -o testplan/webreport
说明:testplan/RedisLock.jmx 为测试计划文件路径testplan/result/result.txt 为测试结果文件路径testplan/webreport 为web报告保存路径。
Web报告如下:

六.写在最后
线程数量和循环次数将会影响最终的测试报告,请大家多多测试。

jmeter 高并发测试报告_使用 JMeter 进行压力测试相关推荐

  1. jmeter 高并发测试报告_Windows下JMeter分布式压测环境搭建

    JMeter是Apache组织开发的开源项目,设计之初用于性能测试,同时它在实现对各种接口的调用方面做得比较成熟,因此,常被用于接口功能测试和性能测试.它能够很好的支持各种常见接口,如HTTP(S). ...

  2. jmeter 高并发测试报告_JMeter分布式测试

    一.为什么要使用分布式测试 按照一般的压力机配置,jmeter的GUI模式下(Windows),最多支持300左右的模拟请求线程,再大的话,容易造成卡顿.无响应等情况,这是限于jmeter其本身的机制 ...

  3. jmeter高并发测试_利用Apache JMeter进行高并发测试(二)

    上一篇文章里测试了服务器经过负载均衡之后的静态页面(准确的说也不完全是静态页面,因为里面也包含了数据库请求,只是没有数据所以看着像是一个静态页面),今天来做下请求动态数据页面压力测试. 先使用Navi ...

  4. jmeter性能测试报告_用 JMeter 做接口测试的优劣浅析

      2018年由软件质量报道做的调查报告表明,受调查的测试人员中约有40.67%的人使用JMeter作为接口测试的自动化测试工具(排在商业化或者开源工具中的第一),剩下的为Postman(28%),以 ...

  5. JMeter 高并发测试

    一.需求 模拟大批量数据http请求 二.分析 在进行压测的时候,一款很棒的. 三.具体方案 JMeter本身支持代理录制方案.支持第三方录制方案 [方案1]第三方录制是指使用第三方录制软件(Blaz ...

  6. java高并发解决方案_长文慎入-探索Java并发编程与高并发解决方案

    所有示例代码,请见/下载于 1 基本概念 1.1 并发 同时拥有两个或者多个线程,如果程序在单核处理器上运行多个线程将交替地换入或者换出内存,这些线程是同时"存在"的,每个线程都处 ...

  7. 使用akka构建高并发程序_如何使用Akka Cluster创建简单的应用程序

    使用akka构建高并发程序 If you read my previous story about Scalachain, you probably noticed that it is far fr ...

  8. .netcore大型商城系统源码_前后端完全分离_高并发支持_八大数据库

    OctShop是一个底层用C#,.net core 6.0编写的大型专业级的,B2B2C+O2O一体化的商城系统,并免费提供商城所有系统源码. API接口和系统SDK多语言支持,也可根据客户需求定制相 ...

  9. 高并发编程_高并发编程系列:7大并发容器详解(附面试题和企业编程指南)...

    不知道从什么时候起,在Java编程中,经常听到Java集合类,同步容器.并发容器,高并发编程成为当下程序员需要去了解掌握的技术之一,那么他们有哪些具体分类,以及各自之间的区别和优劣呢? 只有把这些梳理 ...

最新文章

  1. JZOJ 5195. 【NOIP2017提高组模拟7.3】A
  2. 学习Java开发难不难?好学吗?
  3. 名图1.8智能隐藏功能_7年后再度回归 全新一代名图“大”不同_搜狐汽车
  4. 软件测试工程师-缺陷报告
  5. vue获取input焦点事件_vue获取input焦点,弹框后自动获取input焦点
  6. kafka 不同分区文件存储_Kafka 系列(二)文件存储机制与Producer架构原理怎样保证数据可靠性??...
  7. 计算机毕业设计之Android的图书馆借阅占座座位app(源码+系统+mysql数据库+Lw文档)
  8. 计算机控制的液压提升,一种液压提升监控系统及其在液压提升控制上的运用
  9. 遍历上三角或者下三角
  10. Android移动开发的几种方式
  11. python中ls是什么_写给那些想学Python的人,建议收藏后细看
  12. r语言中大小写c的区别吗,R语言和C语言哪个难?
  13. 计算机连接不上蓝牙鼠标,蓝牙鼠标连接不上的解决方案
  14. Android开发工具系列 --Hosts映射
  15. 无法打开位置服务器,电脑的定位功能无法打开怎么办?
  16. 使用golang编写Prometheus Exporter
  17. r语言如何计算均方误差
  18. 弱网测试之NEWT(Network Emulator Toolkit)
  19. 《自然》杂志发布2018年度影响世界的十大科学人物,中国神童入榜
  20. 今日干货|如何自学视频剪辑(自学视频剪辑容易吗)

热门文章

  1. 关于栈的写入和延伸的方向
  2. Python基础教程:字典和Json
  3. Python列表的增删查改及常用操作
  4. Python 缓冲区
  5. Python-类型注解(3.5引入)
  6. java的多态是什么意思_Java中的多态是什么?
  7. java数组详解_java数组详解
  8. 微信小程序直播自己的服务器,使用微信小程序和腾讯云实现直播功能
  9. ai的预览模式切换_绝对高级!AI打造超酷矩阵纬度文字效果!
  10. 局域网延时大怎么办?