Jmeter性能压测 —— 高并发思路

测试场景:模拟双11,百万级的订单量一个物流信息的查询接口。

条件:接口响应时间<150ms以内。10万并发量每秒。

设计性能测试方案

1、生产环境

①10W/S--并发量(架构师/技术负责人提供)

②20台机器(4G*4核配置)

2、性能测试环境

①出于成本考虑,绝大多数公司,是做不到和生产环境一样配置的。有些生产环境有几百台甚至几千台机器,测试环境做不到。

②基准测试 -- 少量的请求,少量的服务器 -- 性能测试 -- 通过理论推导 生产环境性能。

(4G*4核配置)1台 --> 性能指标 -- 推导 --只需要1台与服务器相同配置的机器能完成5000/s并发量即可(类似数学中的同理可得,以此类推)

注意事项:

性能测试项目部署服务器硬件型号 -- 和生产环境一致

3、性能测试用例设计

①生产环境面临并发量100000,服务器20台,平均到每台服务器5000/s,当并发需求=5000/s的时候,并发量要大于等于5000/s才扛得住。

性能指标:

吞吐量(接受发送):>=5000/S(QueryPS -- 查询数据场景(一秒内处理查询请求数量)-- TransactionPS -- 多个操作/设计数据修改的请求)

单位时间(s)-- 处理请求的数量

并发量:5000/s (相对并发:某一个时间段)(绝对并发:同一个时间)

响应时间:接口请求从开始到结束完整时间 -- 150ms

性能测试用例 -- 执行步骤 + 执行结果验证

负载测试 -- 系统承载的极限并发

不断加大并发 -- 直到系统不满足性能需要【性能瓶颈】【拐点】

压力测试(稳定性测试)-- 极限并发情况下,系统能否稳定 指定时间(一般压力测试时间大于12小时)

两个测试的先后顺序:先做压力测试再做负载测试,主要是因为要做压力测试你首先要知道极限并发是多少,负载测试就能知道极限并发。

线程目的:去执行接口调用

模拟总共500线程 --> 慢慢增加 -- 最终达到

只压500线程而不是5000线程的原因是,接口平均访问返回时间为100ms,1秒就有1个线程就可以造成10并发的压力。

所以只需要500个用户,1秒就能达到5000并发的压力。

4、Jmeter用到的插件有

①Stepping Thread Group和loadrunner一样,梯度压测,每次递增可以在Next,add中自己填入参数。

②Jmeter压测实时仪表盘在后端监听器中。Grafana(目前还没研究这个仪表盘,等接口框架都写完再来继续填坑)

③性能测试仪表盘的好处是它有集群监测,可以进行linux的集群监控。

最后感谢每一个认真阅读我文章的人!作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,坚持几天便放弃的感受的话,在这里我给大家分享一些软件测试的学习资源,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,希望能给你前进的路上带来帮助。如果你用得到的话可以直接拿走:

软件测试资料领取:[内部资源] 想拿年薪40W+的软件测试人员,这份资料必须领取~

软件测试面试刷题工具领取:软件测试面试刷题【800道面试题+答案免费刷】

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

### JMeter WebSocket 配置 IP 和 Path 的方法 在进行基于 JMeter 的 WebSocket 性能试时,需要明确目标服务器的地址(IP 或域名)和路径(Path)。以下是具体的实现方式: #### 获取 WebSocket URL 信息 可以通过 Chrome 浏览器的开发者工具(F12)捕获 WebSocket 请求的相关信息。打开网络面板并筛选 WebSocket 类型的数据流,找到对应的连接请求后,可以查看其完整的 URL 地址[^1]。 URL 结构通常如下: ``` ws://<ip_or_domain>:<port>/<path> wss://<secure_ip_or_domain>:<port>/<path> (如果使用 HTTPS) ``` 其中 `<ip_or_domain>` 是服务端的 IP 地址或者域名,`<port>` 表示使用的端口号,默认情况下 Websocket 使用 `80` (HTTP) 或者 `443`(HTTPS),而 `<path>` 则指定了资源的具体位置。 #### 在 JMeter 中配置 WebSocket 插件 为了完成上述操作,需先安装适用于 Apache JMeter 的第三方插件—— **JMeter WebSocket Samplers Plugin** 。之后按照以下步骤设置采样器参数: 1. 添加一个新的线程组(Thread Group); 2. 将 “WebSocket Sampler” 拖放到该线程下; 3. 设置 Server Name or IP 字段为之前从浏览器抓包得到的目标主机名/IP; 4. Port Number 输入相应的端口数值; 5. Protocol 应当依据实际情况填写 ws 或 wss ; 6. Text Request 下方填入初始握手所需的 URI 路径部分即 `/path`. 对于更复杂的场景如身份验证,则可能还需要额外处理 Cookies 数据。这一步骤可通过 JavaScript 执行类似下面这样的语句手动注入自定义 Cookie 来模拟登录状态[^5]: ```javascript document.cookie = "your_cookie_name=your_value"; ``` 另外值得注意的是,在某些特定条件下,例如高并发环境下,WebSockets 的延迟表现可能会显著劣于普通的 HTTP 请求[^4]。因此建议合理调整试计划中的虚拟用户数量及相关定时器策略,从而获得更加贴近实际业务需求的结果反馈。 最后提醒一点,除了单纯关注 TPS 和响应时间之外,也应当密切留意后台服务器的各项硬件资源消耗情况,包括但不限于 CPU 占用率、内存剩余量、磁盘 I/O 状态以及网络带宽利用率等方面的变化趋势[^3]。 ```bash # 示例命令用于生成 curl 文件以便进一步分析 curl -X GET http://example.com/resource --output resource.txt ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值