当前位置: 首页 > news >正文

JMeter的配置元件

《JMeter核心技术、性能测试与性能分析(编程与应用开发丛书)》(张永清,张永松)【摘要 书评 试读】- 京东图书

3.3.1  常用配置元件

在JMeter中,配置元件主要用于配置性能测试中需要的一些配置信息,以便初始化变量或者参数的默认值。比如,读取指定的CSV文件数据、设置公共请求参数、赋予变量值等,这些信息在后续性能测试脚本中能被取样器直接使用,如图3-8所示。

图3-8  如何添加配置元件

从图中可以看到配置元件通常包括以下项目:

(1)CSV Data Set Config:表示从指定路径的CSV数据中读取和设置配置信息。

(2)HTTP信息头管理器:表示设置HTTP请求的信息头管理器,这里的HTTP请求通常指的就是HTTP请求的取样器。每一个HTTP 请求都有请求头信息,而且通常会有默认的请求头信息。如果不使用默认的信息头信息,可以通过HTTP信息头管理器来进行修改。

(3)HTTP Cookie管理器:表示自定义设置HTTP请求的Cookie。Cookie通常是由服务器返回到浏览器并直接保存在浏览器上的一小块数据。浏览器在之后的请求中,都会携带着这一小块的数据,如图3-9所示,Cookie的作用通常用于区分是否是同一个用户发送的请求。Cookie通常分为如下几种。

  • 会话Cookie:指的是该Cookie的生命周期是会话级的,当会话关闭时(比如浏览器关闭),Cookie就会失效。
  • 持久Cookie:指的是可以长期使用的Cookie,但是通常也会带有具体的过期日期,并且在不同的浏览器中都可以使用。

图3-9  浏览器中如何使用Cookie发送HTTP请求

(4)HTTP缓存管理器:指的是HTTP请求的缓存管理设置,通常用于在性能测试中模拟浏览器的缓存行为。HTTP缓存管理器用于设置JMeter 如何处理 HTTP 请求的缓存。

(5)HTTP请求默认值:用于设置HTTP请求的默认值,比如请求的协议、服务端的IP或者域名地址、服务端的端口号、默认的HTTP请求参数等。

(6)Bolt Connection Configuration:用于配置Bolt 协议连接。Bolt 是一种基于TCP的网络应用连接协议,比如连接Neo4j数据库(一个高性能的NOSQL图形数据库)时,采用的就是这种协议。

(7)计数器:用于在测试时生成连续不重复的数字。通常用于生成一个唯一的数字或者Id,比如,当向数据库中插入数据时,需要保证数据的唯一性,就可以用计数器来构造唯一不重复的数据。当定义了一个计数器后,就可以通过引用名称来引用这个计数器,此时就可以把计数器当成一个变量来引用和使用。

(8)DNS缓存管理器:通常用于设置自定义的DNS解析,其实就是在JMeter中设置了一个自定义域名和服务端IP的映射关系。当访问自定义的域名时,可以直接将请求发送到对应的服务端IP上。

(9)FTP默认请求:用于设置FTP取样器请求的默认配置,包括FTP服务端的IP、端口号、远程文件的路径等信息。

(10)HTTP授权管理器:用于设置和管理HTTP 请求的授权认证方式。

(11)JDBC Connection Configuration:用于设置JDBC取样器请求的默认配置信息,通常包括JDBC URL、JDBC 驱动的Class名称、用户名、密码、JDBC的超时配置等信息。

(12)Java默认请求:用于设置JMeter中自带的Java取样器的默认配置信息。

(13)Keystore Configuration:用于设置Keystore,通常在HTTPS请求协议中会被用到。使用该配置时,Keystore配置需要先导入到Java密钥库中。Keystore配置包括预加载、别名变量、索引等选项。

(14)LDAP扩展请求默认值:用于设置LDAP扩展请求取样器的默认值。LDAP是一种网络传输的应用层协议,JMeter支持对LDAP服务做性能压测。

(15)LDAP默认请求:用于设置LDAP请求取样器的默认请求值。

(16)登录配置元件/素:用于设置登录配置的用户名和密码。通常用于用户身份认证的场景设置。

(17)Random Variable:用于设置获取随机值,并且可以将该随机值赋予给一个变量,然后在JMeter中直接引用这个变量来产生随机数。

(18)简单配置元件:指可以通过简单的方式来配置元素的值。

(19)TCP取样器配置:用于设置TCP请求取样器的默认配置。

(20)用户定义的变量:用于设置用户自定义的全局变量,该全局变量可以在整个JMeter性能测试计划中生效和使用。

3.3.2  JDBC Connection Configuration配置项详情

JDBC Connection Configuration配置项介绍如下。

(1)Variable Name for created pool:用于设置创建的连接池的变量名称。在JMeter测试计划中可以同时创建多个JDBC Connection Configuration,在每个JDBC Connection Configuration中设置一个不同的变量名称,然后每个JDBC取样器可以绑定对应的不同的连接池变量,因为在一个JMeter测试计划中,可以创建多个JDBC取样器。

(2)Max Number of Connections:用于设置连接池中最大的连接数。如果将其设置为0,则表示JMeter多并发用户线程中,每个线程都可以获得自己的连接池,并且每个线程自己的连接池中都只有1个线程,以达到每个线程之间不会共享连接;如果需要使用共享连接池,那么建议需要将最大的连接数设置为与线程总数相同,以确保线程不会相互等待连接释放。

(3)Max Wait (ms):设置JMeter尝试检索获取连接的最大等待时长,单位为毫秒。如果超出该时长,会抛出异常;如果设置为0或者小于0,则表示设置为无限期等待。

(4)Time Between Eviction Runs (ms):用于设置空闲对象驱逐线程运行之间休眠的时长,单位为毫秒,默认为60000,即1分钟。空闲对象驱逐线程通常用于对一些空闲不用的连接进行释放,以节省服务器端相关资源的开销。

(5)Auto Commit:用于设置是否打开连接的事务自动提交。在数据库操作中通常需要处理事务。数据库事务具有如下特性:

  1. 原子性:事务是一个不可分割的工作单位,要么全部执行,要么全部不执行。如果事务中的任何一步操作失败,整个事务都会被回滚,回到操作之前的状态,不会造成数据的损坏或不一致。
  2. 一致性:事务在执行前后,数据库从一个一致性状态转移到另一个一致性状态。即使在事务执行过程中出现异常,数据库也会通过回滚操作,将数据恢复到一致性状态。
  3. 隔离性:指事务的执行不会受到其他事务的影响,每个事务在执行过程中都应该感觉不到其他事务的存在。即使多个事务同时操作同一数据,也不会互相干扰。隔离性能够防止并发事务导致的数据异常和数据不一致问题。
  4. 持久性:一旦事务被提交,其所做的修改将会永久保存在数据库中,并且即使系统发生故障,这些修改也不会丢失。数据库系统会将事务的修改持久化到磁盘中,以保证数据的持久性。

(6)Transaction isolation:用于设置数据库事务的隔离级别,如果数据库操作时,不设置事务隔离级别,可能会导致如下问题:

  1. 脏读:一个事务会读取了另一个事务还没有提交的数据。
  2. 不可重复读:一个事务的操作会引起另一个事务前后两次读取到的数据不一致。
  3. 幻读:一个事务的操作导致另一个事务前后两次查询到的数据量不一样多。

在JMeter中,支持的隔离级别选项如下:

  • TRANSACTION_NONE:表示设置为无事务,即表示不使用事务。
  • TRANSACTION_READ_UNCOMMITTED:表示设置为允许读取其他还没有被提交到数据库的并发事务做出的修改。在所有有效的事务级别中,这个事务在查询时,查询速度是最快的,因为不需要等待其他事务处理完成才能进行。
  • TRANSACTION_READ_COMMITTED:表示设置为可以读取已经被提交到数据库中的其他并发事务所做出的修改。如果其他的并发事务修改了数据,但是还没提交,那么在该事务级别下查询数据时,该数据是不会被查询出来的。
  • TRANSACTION_SERIALIZABLE:表示设置为等待其他的所有事务提交后才能执行当前的数据库操作。这个事务隔离级别通常是最慢的,因为此时所有的事务都是串行执行的,后一个事务必须等前面一个事务提交后才能执行。
  • DEFAULT:每个数据库的默认隔离级别不一样,比如常用的MySQL数据库中的默认隔离级别为TRANSACTION_REPEATABLE_READ。
  • TRANSACTION_REPEATABLE_READ:表示设置为数据读取操作可以重复执行,即表示每次读取同样的数据应该总是得到同样的结果,这个事务级别比TRANSACTION_SERIALIZABLE要快,但是比其他的事务隔离级别都要慢。
  • 自定义编辑:允许用户自己自定义输入事务隔离级别的类型。

(7)Pool Prepared Statements:设置连接池中待准备的SQL语句的最大数量。如果设置为0,表示最大数量不受限制;如果设置为-1,表示禁用该功能。

(8)Preinit Pool:用于设置连接池是否可以立即初始化。默认为False,此时使用此连接池的JDBC取样器可能会在首次查询时使用的时长较久,因为此时整个连接池的连接建立时间都包含在内。

(9)Init SQL statements separated by new line:用于设置初始化的SQL语句,该SQL语句可以在连接池创建时就立即执行,但是这些SQL语句仅在配置的连接池创建连接时执行一次。

(10)Test While Idle:用于设置是否开启测试连接池是否可用的空闲连接。

(11)Soft Min Evictable Idle Time(ms):用于设置每个连接在连接池中可以空闲的最短时长。当超过该时长时,可能就会被空闲对象驱逐线程驱逐,单位为毫秒。

(12)Validation Query:用于设置数据库的查询验证,通常用于保持数据库的连接,或者检查数据库当前的状态是否正常以及是否可以正常响应查询。比如,在MySQL、MariaDB、SQL Server 、PostgreSQL等数据库中,可以设置为select 1。

(13)Database URL:用于设置数据库的JDBC连接地址。

(14)JDBC Driver class:用于设置JDBC驱动的Class 名称。常见数据库的JDBC Driver class说明如下:

  • Oracle数据库:oracle.jdbc.OracleDriver。
  • DB2数据库:com.ibm.db2.jcc.DB2Driver。
  • MySQL数据库:com.mysql.jdbc.Driver。
  • SQL Server数据库:com.microsoft.sqlserver.jdbc.SQLServerDriver 或者com.microsoft. jdbc.sqlserver.SQLServerDriver。
  • PostgreSQL数据库:org.postgresql.Driver。
  • MariaDB数据库:org.mariadb.jdbc.Driver。

(15)Username:用于设置数据库的用户名。

(16)Password:用于设置数据库的密码。

(17)Connection Properties:用于设置建立JDBC连接时需要自定义指定的连接属性。比如,在Oracle数据库中,可以自定义设置internal_long=sysdba。

3.3.3  TCP取样器配置详情

TCP取样器配置通常用于设置TCP请求取样器的默认配置。JMeter 支持直接对TCP协议的服务发起性能压测请求。该配置界面支持的配置如下:

(1)TCPClient classname:用于设置TCP客户端的类名。

(2)服务器名称或IP:用于设置TCP服务端的域名或者IP。

(3)端口号:用于设置TCP服务端的端口号。

(4)连接超时:用于设置TCP连接的超时时长,单位为毫秒。

(5)响应超时:用于设置TCP请求的响应超时时长,单位为毫秒。

(6)Re-use connection:如果选中该选项,TCP连接将始终保持打开状态。否则,当数据被读取完后,TCP连接将被关闭。

(7)关闭连接:如果选中该选项,则在运行取样器结束后关闭连接。

(8)设置无延迟:用于是否将nodelay 属性设置为true。

(9)SO_LINGER:用于设置在socket连接创建时,指定延迟时长,单位为秒。如果将延迟的时长设置为0,可以避免大量TCP连接状态为TIME_WAIT的连接存在。TIME_WAIT是TCP连接中的一种中间状态,用于确保连接可靠关闭的关键状态,通常持续60秒左右。但是,如果大量的连接都处于TIME_WAIT状态,将会导致连接不能及时释放,从而导致性能测试时连接不够用,造成一定的性能瓶颈。

(10)行尾(EOL)字节值:用于设置行尾的字节值。如果将其设置为-128到+127范围之外的值,则可以跳过TCP请求中的EOL检查。

(11)要发送的文本:设置TCP请求需要发送的文本内容。

3.3.4  HTTP授权管理器配置详情

HTTP授权管理器通常用于设置和管理HTTP 请求的授权认证方式。当HTTP 服务端需要做授权认证时,就需要用到该授权管理器。授权管理器允许为服务端指定一个或者多个认证用户,并且为这些认证用户指定默认的用户名和密码。其使用的场景通常是在一些服务端身份证验证的网站中,当用户浏览某个页面时,会自动弹出一个身份认证的登录界面或者登录对话框。JMeter在遇到这种场景时,就会自动传入默认设置的授权认证信息。授权认证时,需要在JMeter界面中设置的参数配置包括:

(1)Base URL:用于设置与待鉴权的一个或者多个HTTP URL地址匹配的部分或者完整URL地址。

(2)Username:用于设置待授权的用户名。

(3)Password:用于设置待授权的用户名对应的密码。

(4)Domain:用于设置待授权的域名地址。

(5)Realm:用于设置待授权的领域。

(6)Mechanism:用于设置身份验证类型。JMeter可以根据使用的HTTP请求取样器来执行不同类型的身份验证。比如,当HTTP请求取样器的客户端为纯Java语言实现时(即客户端实现的下拉框选择为Java),其Mechanism为BASIC;而当为HttpClient4实现时, Mechanism则可以支持BASIC、 DIGEST 和Kerberos这三种类型,如图3-10所示。

图3-10  HTTP请求取样器界面

http://www.dtcms.com/a/390633.html

相关文章:

  • Charles与Postman、JMeter结合使用教程:高效接口调试与性能测试方案
  • 【Haddop】Hive的离线分析与Sqoop的数据集成
  • 嵌入式 Linux 基础入门笔记(1)
  • Starlink 2.0与3GPP NTN技术对比分析:颠覆性优势与产业格局重构
  • 鸿蒙Next用户文件管理全解析:安全、高效、跨设备的未来体验
  • 简形电力JX2202 智能测试系统:重构新能源电力检测效率标准
  • AI识别视频中动物与人物的技术深度解析
  • iOS 上架完整流程指南 苹果应用发布步骤、App Store 上架流程
  • MySQL-CRUD 操作及常用查询语法详解
  • 玳瑁的嵌入式日记---0919(ARM)
  • Objective-C —— APIs declaration 自定义
  • 【XTDrone】笔记5:control文件详解
  • 抓包的那些事,抓包的原理、常见场景、工具比较与实战排查流程(抓包步骤、iOS 抓包、HTTPS 抓包技巧)
  • 软件工程实践八:Web 前端项目实战(SSE、Axios 与代理)
  • 【常见集合】ArrayList与LinkedList
  • IPD流程实战:如何跨领域应用IPD思维?
  • Archery:开源、一站式的数据库 SQL 审核与运维平台
  • 北斗GNSS在地质灾害监测中的变形监测技术与应用解析
  • C语言题目:用“*”作为元素打印菱形
  • Redis的java客户端(SpringDataRedis)
  • Amazon Aurora DSQL:分布式无服务器数据库的下一场革命
  • TVS管频繁损坏,是参数错选还是布局出问题?-ASIM阿赛姆
  • 论文阅读:TEMPORAL GRAPH NETWORKS FOR DEEP LEARNING ON DYNAMIC GRAPHS
  • 医疗行业淘汰赛开始了?医疗器械售后维修是否会有影响?
  • 第二部分:VTK核心类详解(第40章 vtkIdList ID列表类)
  • Elasticsearch的自定义score评分
  • 【软考-系统架构设计师】架构权衡分析方法(ATAM)
  • 信息系统项目的成本管理
  • Python进阶指南7:排序算法和树
  • 深入理解 HashMap的数据结构