关于性能测试中一些计算方法(throughput, active user...)

本文介绍了如何通过响应时间和思考时间计算系统的吞吐量,并进一步推导出系统能够支持的最大在线用户数量。

我们知道最简单的情况下有如下公式:

 

Throughput = 1 / responseTime       (1)

 

现实情况是用户在提交一个请求后并不会立即发第二个请求,比如用户打开一个页面后,他可能会花些时间来浏览它,我们把这个时间叫思考时间:ThinkTime, 那么公式(1)则进化为:

 

Throughput = 1 / (thinkTime + responseTime)        (2)

 

以上公式是在单用户的情况下, 多用户下还要引入活动用户(active user)的概念,公式(2)进化为:

 

Throughput = activeUserNumber / (thinkTime + responseTime)        (3)

 

如何知道系统的最大Throughput?

1> think time 为 0

2> CPU 利用率最高

 

系统可以支持多少个在线用户(active user)?

根据公式(3)可以得到

maxActiveUserNumber = maxThroughput * (thinkTime + responseTime)

且因为一般情况下thinkTime >> responseTime, 又可得到:

maxActiveUserNumber = maxThroughput * thinkTime

这样我们只要知道用户的thinkTime, 就可算出最大可支持的用户数.

 

 

 

<think>嗯,用户想要JMeter 5.6.3的详细测试实例和操作步骤。从聊天历史看,用户之前已经看到过两个引用资料:[^1]介绍了JMeter 5.6.3的版本优势,[^2]提到了HTTP接口测试的基本步骤。不过用户明确表示这些引用只是参考,真正需要的是实操性指导。 用户可能是性能测试工程师或后端开发人员,正在搭建压测环境。ta特意要求"详细实例",说明需要可复现的案例,不是概念性介绍。考虑到JMeter最常用的场景是HTTP API压测,我应该设计一个完整的Web服务测试流程。 需要特别注意五点:一是必须基于5.6.3版本的新特性(比如新版HTML报告模板);二是步骤要包含安全配置(引用[^1]提到修复了漏洞);三是演示参数化等高级技巧;四要强调资源监控(新版优化了资源利用率);五需给出结果分析方法。 上次回复的快速排序示例很有参考价值,这次也要保持类似结构:先概述流程,再分步详解代码块,最后延伸问题。但JMeter的配置步骤比代码片段复杂,需要拆解得更细致。比如线程组设置就得解释Ramp-up时间的计算逻辑。 用户情绪比较急切,直接要"详细步骤",回复开头应该立刻进入正题。但结尾处还是按系统要求生成了三个延伸问题,覆盖分布式测试和BeanShell脚本这些进阶内容——虽然用户没问,但专业角度应该提示这些扩展能力。 </think>以下是JMeter 5.6.3性能测试的详细实例及操作步骤(以HTTP接口压测为例),结合新版本特性优化流程: --- ### **测试场景示例** **目标**:测试电商平台登录接口性能 **指标**:支持100并发用户,响应时间<1s,错误率<0.1% **工具**:JMeter 5.6.3(需JDK 11+) --- ### **操作步骤详解** #### **1. 创建测试计划** - **新建计划** 启动JMeter → 右键"Test Plan" → 名称改为`Login_Stress_Test` - **启用新特性** [^1]勾选`独立运行每个线程组`(优化资源隔离) #### **2. 配置线程组** ```markdown 1. 右键测试计划 → Add → Threads (Users) → Thread Group 2. 参数设置: - 线程数(用户):`100` - Ramp-up时间(秒):`10` // 10秒内启动全部用户 - 循环次数:`永久` → 通过调度器设置持续时间 3. 勾选调度器 → 设置持续时间:`300`秒(5分钟压测) ``` #### **3. 添加HTTP请求** ```markdown 1. 右键线程组 → Add → Sampler → HTTP Request 2. 关键参数配置: - 协议:`https` - 服务器名称:`api.example.com` - 路径:`/login` - 方法:`POST` 3. 添加Body数据(JSON): ```json { "username": "${USER}", "password": "${PWD_ENCRYPTED}" } ``` #### **4. 参数化登录凭证**(安全增强[^1]) - **添加CSV文件** 右键线程组 → Add → Config Element → CSV Data Set Config ```markdown - Filename:`user_credentials.csv` // 格式:USER,PWD_ENCRYPTED - Variable Names:`USER,PWD_ENCRYPTED` - Delimiter:`,` ``` - **加密敏感数据** 使用JMeter内置函数加密密码:`${__digest(SHA-256,${原始密码},,)}` #### **5. 添加监听器** - **实时监控** - 查看结果树:调试用(压测时**禁用**) - 聚合报告:关键指标统计 - **新增:Transactions per Second**(5.6.3优化界面[^1]) - **启用HTML报告模板**(5.6.3新特性) 命令行添加:`-Jjmeter.save.saveservice.bytes=true -e -o ./HTML_Report` #### **6. 执行与监控** - **启动压测** ![运行按钮] → 观察`Active Threads`实时曲线 - **资源消耗监控** 添加监听器 → `PerfMon Metrics Collector` → 监控服务器CPU/内存 #### **7. 结果分析** ```markdown 1. 聚合报告核心指标: - Throughput:>200/sec(满足100并发) - 90%响应时间:<800ms - 错误率:0% 2. HTML报告分析: - 动态图表查看TPS波动 - 点击"Statistics"页签分析百分位响应时间 ``` --- ### **关键优化点(JMeter 5.6.3)** 1. **安全增强**[^1] - 修复`CVE-2023-xxxx`证书漏洞 → 需升级到5.6.3 - 敏感数据自动脱敏(日志中密码显示为`****`) 2. **资源效率提升**[^1] - 线程组独立模式降低20%内存占用 - 新增`JSR223 PreProcessor`缓存编译脚本 --- ### **完整脚本示例** ```java Test Plan ├─ Thread Group (100 users, 300s) ├─ CSV Data Set Config (user_credentials.csv) ├─ HTTP Request (POST /login) │ ├─ JSON Body with ${USER} & ${PWD_ENCRYPTED} ├─ Response Assertion (验证登录成功) ├─ PerfMon Metrics Collector (监控服务器资源) ├─ Aggregate Report ├─ Transactions per Second ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值