Jemter   压测基础(一)

1.压力测试的基本概念

 

  1.吞吐率(Requestspersecond)

    服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。计算公式:总请求数/处理完成这些请求数所花费的时间,即Requestpersecond=Completerequests/Timetakenfortests

  

  2.并发连接数(Thenumberofconcurrentconnections)

    某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。

  3.并发用户数(Thenumberofconcurrentusers,ConcurrencyLevel)

    注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,即连接数。

  4.用户平均请求等待时间(Timeperrequest)

    计算公式:处理完成所有请求数所花费的时间/(总请求数/并发用户数),即Timeperrequest=Timetakenfortests/(Completerequests/ConcurrencyLevel)

  5.服务器平均请求等待时间(Timeperrequest:acrossallconcurrentrequests)

    计算公式:处理完成所有请求数所花费的时间/总请求数,即Timetakenfor/testsCompleterequests可以看到,它是吞吐率的倒数。同时,它也=用户平均请求等待时间/并发用户数,即 Timeperrequest/ConcurrencyLevel

 

2.安装打开Jemeter,添加测试计划等

  地址:http://jmeter.apache.org/download_jmeter.cgi

1】运行安装目录中的bin/jmeter.bat

2】新建testplan

3】添加 thread group

  Number of Threads (Users) 线程数:发送请求的总次数

  Ramp-up Period(in seconds):Jmeter达到指定最大线程数的时间

  Loop Count :循环次数,Forever,线程组中的线程将不间断的连续测试系统

  调度器:主要用来指定该测试的一些时间信息,比如从几点到几点运行测试,如果到了指定时间测试没有进行完成,测试也会被停止。

4】添加请求:sampler——》HTTP request

  填写:服务器IP、port、接口URL、请求方法、请求参数(POST请求参数只支持Body Data,不支持Parameters)

5】添加HTTP Header Manager:config element——》HTTP Header Manager

  1)config element 配置单元:和Sample组件一起工作,主要用来配置Sample如何来发起请求访问服务器,特点是可以把一些Sample的共同配置放在一个元素里面方便管理,配置单元是有作用域的。作用域和树的那个关系一样越是上级节点的作用域越大,越是接近叶子节点的作用域就越小,可以复写上级作用域的配置。

  2)填写请求头信息:尽量使用fiddler抓包 获取

  3)Accept (Accept填写不正确,会报错406)

   X-Requested-With

   Content-Type 等

   

6】添加监听

  例如:

  Summary Report:listener——》Summary Report

  View Results Tree:listener——》View Results Tree

  

  常用监听:

  1)断言结果

  2)查看结果树

  3)聚合报告

  4)用表格查看结果

  5)图形结果

  6)aggregate graph

7】JMeter安装PerfMon插件

  PerfMon用来监控Server的CPU、I/O、Memory等情况。

  1) 插件下载地址:http://code.google.com/p/jmeter-plugins/wiki/PerfMon

  2)把JMeterPlugins.jar放到jmeter客户端的jmeter/lib/ext下。

  3)启动jmeter,添加Listener时你就看到PerfMon Metrics Collectors了。

  4)另外还需要把下载下来的PerfMon解压后放到所有的被测试的服务器上,并运JMeterPlugins/serverAgent/startAgent.sh,默认工作在4444端口。

  5) 使用PerfMon截图:

  

  在非GUI模式下运行Jmeter时指定把result保存到一个文件,非常必要

3.远程启动jmeter(分布式性能测试)

  JMeter是由Java开发的,比较耗内存、占CPU,所以在大并发下还是需要分布式

  应用进场景:用一台机器 Controller(称为JMeter客户端)上的jmeter同时启动另外几台机器 Agent(称为JMeter远程服务器)上的jmeter。

  1)保证jmeter客户端和jmeter远程服务器采用相同版本的jmeter和JDK,并配置环境变量。

  2)jmeter客户端和jmeter远程服务器最好在同一个网段内。

  3)在jmeter远程服务器上运行JMETER_HOME/bin/jmeter-server (Linux/UNIX)或者JMETER_HOME/bin/jmeter-server.bat(Windows);在console上可以看到对应机器的IP以及port;

  4)在jmeter客户端上修改/bin/jmeter.properties文件,找到属性"remote_hosts",使用JMeter远程服务器的IP地址作为其属性值。可以添加多个服务器的IP地址,以逗号作为分隔;port有可能会不同,但一般情况下是相同的

    如果配置了Controller的IP那么会将controller机器也作为一台压力机

    #remote_hosts=127.0.0.1
  remote_hosts=9.115.210.2:1099,9.115.210.3:1099,9.115.210.4:1099
  # RMI port to be used by the server (must start rmiregistry with same port)
  server_port=1099

  5) 在jmeter客户端上启动jmeter:

   启动controller的JMeter,进入JMeter GUI页面,选择菜单“运行”——》“远程启动”,分别启动agent,也可以直接选择“远程全部启动”启动所有agent的JMeter
 

  注意点

      1.尽量关闭防火墙

      2.确定在controller机器上安装jdk,版本和JMeter一致(兼容行)

      3.Agent机器启动 JMeter_server时,后台提示:"could not find ApacheJmeter_core.jar"

          解决办法:添加环境变量JMETER_HOME,路径为bin目录的上一级

      4.JMeter分布式控制过程中,各个Agent启动的线程数等于线程组中的配置

 4.导出运行结果 

  JMeter中,结果需要存放在.jtl文件。在下图红色区域填写你需要要保存的位置以及文件名称,例如: D:/testReuslt.jtl

  .jtl文件可以提供多中格式的编写,一般我们都是将其以CSV文件格式记录。

  进入JMeter后,选择某个监听器,点击页面中的configure按钮。设置界面,可以勾选Save Field Names(CSV),Save Assertion Failure Message等等

5.压力测试报告

  1、压力测试概要

    测试环境:

    测试时间:

    服务端配置:

    客户端配置:

    测试工具:JMeter

  2、测试说明

    (1)名词定义(时间单位ms)

    Sample:本次测试场景共运行多少线程;

    Average:平均响应时间;

    Median:统计意义上的响应时间中值;

    90% line:所有线程中90%的线程响应时间都小于xx的值;

     Min:响应最小时间;

    Max:响应最大时间;

     Error:出错率;

    Throughput - 吞吐量以“requests/second、requests /minute、 requests /hour”来衡量。 时间单位已经被选取为second,所以,显示速率至少是1.0,即每秒1个请求。 当吞吐量被保存到CVS文件时,采用的是requests/second,所以30.0 requests/second 在CVS中被保存为0.5Kb/sec - 以Kilobytes/seond来衡量的吞吐量

  (2)描述测试数据,例如:

    分别对以上页面进行压力测试     分别测试10,50,100,500,1000个线程,来模拟这么多用户并发访问系统,每个用户循环访问一次

   3、测试结果分析(列出表格,主要是聚合报告各数据对比)

   4、给出典型聚合报告(聚合报告名词解释如上2、(1)所述)

   5、给出典型图形结果

    名词解释:

    样本数目是总共发送到服务器的请求数。

    最新样本是代表时间的数字,是服务器响应最后一个请求的时间。

    吞吐量是服务器每分钟处理的请求数。

    平均值是总运行时间除以发送到服务器的请求数。

    中间值是代表时间的数字,有一半的服务器响应时间低于该值而另一半高于该值。

    偏离表示服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布。

  6、根据以上结果分析,给出总结,得出结论,说明调优点

6.非GUI模式下运行Jmeter

  具体方法:先在GUI模式下创建TestPlan,保存为jmx文件

  命令行启动jmeter:./ApacheJMeter -n -t testplan.jmx (选项-n表示non-GUI,-t指定TestPlan文件)

  运行结束后Aggregate Report和PerfMon Metrics Collector就会保存在你指定的文件中

  保存PerfMon Metrics Collector的文件拖到Jmerter GUI中就可以看到CUP等使用状况拆线图了

转载于 https://www.cnblogs.com/shadow-yin/p/9923377.html

Jemter 压测基础(一)的更多相关文章

  1. Jemter 压测基础(一)——基本概念、JMeter安装使用、分布式测试、导出测试结果、编写测试报告

    Jemter   压测基础(一) 1.压力测试的基本概念: 1.吞吐率(Requestspersecond) 服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请 ...

  2. Jmeter压测基础(二)——Badboy功能、Jmeter参数化、检查点、集合点、动态关联、图形监控

    Badboy 以下稍微介绍一下badboy的部分功能: 1.Record;play(badboy打开后默认是recording状态) 2.Assertion(检查点/断言) 3.Variable: t ...

  3. JMeter压测基础(三)——Mysql数据库

    JMeter压测基础(三)——Mysql数据库 环境准备 mysql驱动 JMeter jdbc配置 JMeter jdbc请求 1.下载mysql驱动:mysql-connector-java.ja ...

  4. JMeter 压测基础(四)——Java工程测试

    JMeter Java工程测试 1.eclipse中新建工程 2.导入需要的jar包 从JMeter安装目录lib/ext中两个jar包buildPath到Java project中,分别是“Apac ...

  5. 案例 | 荔枝微课基于 kubernetes 搭建分布式压测系统

    王诚强,荔枝微课基础架构负责人.热衷于基础技术研发推广,致力于提供稳定高效的基础架构,推进了荔枝微课集群化从0到1的发展,云原生架构持续演进的实践者. 本文根据2021年4月10日深圳站举办的[腾讯云 ...

  6. jmeter压测数据库,抓包工具,python基础

    jmeter压力测试 前提场景的设置:单场景(单个接口进行压力测试一个请求)或混合场景(有业务流程的场景进行压力测试多个请求),压测时间一般在5--1515分组具体看需求. 数据准备:数据量少和数据量 ...

  7. 压测工具wrk的编译安装与基础使用

    Linux上编译安装: [root@centos ~]# cd /usr/local/src [root@centos ~]# yum install git -y [root@centos ~]# ...

  8. Jmeter(三十六) - 从入门到精通进阶篇 - 设置负载阶梯式压测场景(详解教程)

    1.简介 在性能测试中,有时需要模拟一种实际生产中经常出现的情况,即:从某个值开始不断增加压力,直至达到某个值,然后持续运行一段时间,然后继续加压达到某个值持续运行,如此循环直到达到预期的峰值,运行一 ...

  9. 真刀真枪压测:基于TCPCopy的仿真压测方案

    郑昀 基于刘勤红和石雍志的实践报告 创建于2015/8/13 最后更新于2015/8/19 关键词:压测.TCPCopy.仿真测试.实时拷贝流量 本文档适用人员:技术人员 提纲: 为什么要做仿真测试 ...

  10. Python Locust对指定网站“一键压测”

    [本文出自天外归云的博客园] 前篇 前篇:Python Locust性能测试框架实践 本篇 承上——归纳过程 在前篇的基础上,我们可以利用Locust性能测试框架编写python脚本对指定网站或者接口 ...

随机推荐

  1. LinuxK8S集群搭建三(部署dashboard)

    系统环境: CentOS 7 64位 准备工作: 通过虚拟机创建三台CentOS服务器,可参照之前的文章192.168.28.128 --master192.168.28.130 --node0119 ...

  2. centos8下安装gcc11

    最近的云服务器使用的centos8,c以前编译器对c++20的新特性支持的较少,当前最新版的gcc对c++20的支持还是可以的,于是准备体验一下,首要就是升级gcc gcc官网:https://gcc ...

  3. pgsql中行数据转json数组

    SELECT array_to_json(array_agg(row_to_json(sys_xzqh))) from sys_xzqh where xzqh like '%341126%'

  4. js 监听 变量变化

    var o = {};setTimeout(function () { o.abb = '2';}, 4000);Object.defineProperties(o, { abb: { configu ...

  5. GUI程序中使用Write语句调试

    Lazarus GUI程序中使用Write语句调试 比如像VB 下的 Debug.print 可直接在立即窗口中打印出调试内容 其实可以使用 WriteLn('XXXX ', XXX); Write( ...

  6. nginx通过参数代理到其他站点

    http { include mime.types; default_type application/octet-stream; resolver 8.8.8.8; ##Nginx0.6.18以后的 ...

  7. nnlog 日志模块

    python自带的logging模块理解起来比较费劲,直接pip install nnlog即可 1 import nnlog 2 log = nnlog.Logger(file_name='my.l ...

  8. 关于.net core连接数据库字符串加密查询 (DES加密)

    des加密获取的乱码是相对一致的  所以只需要获取到加密乱码在api后台解密就好 1.创建一个控制台用来获取加密后的乱码 using System; using System.Collections. ...

  9. ES5中对象的继承

    1.继承的类型 在oo语言中,继承有两种方式,借口继承和实现继承,因为ECMAScript不支持方法签名,所以ECMAScript只支持实现继承. 2.原型链继承的实现 2.1.原型链 ES5继承可以 ...

  10. 【驱动】libjpeg 库的移植

    1.下载库  http://www.ijg.org/  下载  jpegsrc.v9e.tar.gz 2.准备好空文件夹位置 opt/libdecode  opt/libdecode/lib  opt ...