思考!思考!jmeter线程数≠用户并发数

最近又在搞性能测试了,相较于之前的写脚本出数据就完事,这次深入的思考了一下测试出来的指标,到底有什么意义???

绞尽脑汁思考了好几天,终于有了点思路,写出来与大家分享,有不对的地方也希望大家能指出;

此处我们只探讨“单交易并发测试”这一个测试场景,本次单交易并发测试共测试了7个接口,我们下面拿一个接口为例来说:

1、首先,通过jmeter阶梯加压,我们发现jmeter线程数到50的时候,响应时间在可接受范围,TPS已经不再明显增加;

2、于是jmeter线程数给到50,持续加压5分钟,得到如下结果:

响应时间OK,TPS达到405.4/sec也OK(OK与否要与前期制定的性能方案做对比)

此时对比了TPS以后,达标了,就想着要测试下一个接口啦;但是:

一同事认为只关注TPS,达标了就可以了;

另一同事认为从用户使用角度,我们还要关注用户并发数,这个并发数反映了用户给系统的压力;现在我们得到了最大TPS,但是并发数还没有加到最大啊,应该继续加压找到最大的并发数!

这个时候感觉同事的话有道理又没道理,于是拿出了那个经典的图思考了半天(没错,就是下面这张图):

随着并发压力的增加,前期响应时间较小,TPS持续上升,达到第一个拐点(此处认为就是我们上面测试的50),TPS达到了最大;

再持续加压,响应时间会增加,TPS也不会上升,一直到第二个拐点(感觉上像是同事想要压到的最大并发点),响应时间达到能接受的最大,TPS也能维持不下降;

思考了半天,觉得也应该继续压,找到系统的这个瓶颈,但是没考虑弄清楚压出来的数据有什么用,但是不管了,先压一版数据看看;

3、于是jmeter线程数给到了400,持续加压了5分钟,得到数据如下:

TPS到了498.0/sec,上升了一些

响应时间,看95%响应时间已经超了3S

4、头脑风暴

得到2组数据以后,我们看TPS都是达到要求的,但是这个50和400,怎么理解呢?

用户并发数50的时候系统性能最优,用户并发数400的时候系统性能达到瓶颈???

NO!!!TPS都能到400多,说明每秒可以处理400个请求,怎么可能用户并发数到400,系统就极限了呢!

--------------------------纠结中,网上搜索资料。。。

网上搜索了一些资料后,发现陷入了一个误区,即:我思考时,默认了这个jmeter线程数就是模拟了用户并发数,但是!不是这样的!!!

我们回去看,线程数为50时得到的结果,会发现其中有一个样本数121821,之前都忽略了这个值,现在我们分析:

1、线程数给了50,这里是工具给我们起了50个线程;

2、如果并发数是50,1S发送50个请求,那么5分钟时间,应该是发送了50*60*5=15000个请求;

3、但是跑了5分钟以后,我们发现样本为121821,远远超过了15000,就是在5分钟的时间内,给服务器发送了121821个请求;

4、那么121821/(5*60)=406,就是1S中发送了406个请求啊,就是用户并发数406啊,根本就不是50~

同理,149810/(5*60)=499

5、然后,我们发现:406    499  ,这不就是TPS吗!所以,我们关注用户并发数,到最后也就是这个TPS啊==

所以,我们是不是可以理解:

用户并发数406的时候,系统的性能是最优的,用户得到的响应也很快??

用户并发数499的时候,系统的性能达到了瓶颈,达到了用户能接受的响应时间极限??

嗯,应该是这样吧。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/5482.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

element_Plus中表格和分页的使用

HTML 表格&#xff08;:data"filterData"绑定的数据&#xff09; <el-table ref"multipleTableRef" :data"filterData" style"width: 100%"selection-change"handleSelectionChange"><el-table-column type"…

图像增强与特效-API调用实践-百度AI

百度智能云-图像增强-清晰度 文章目录 介绍实践Python 解释器获取token调用 最近在整理草稿箱。2022-07-25。我的token应该早过期了哈&#xff0c;需要大家去官网查看最新的api接口申请替换钥匙喔。 介绍 图像清晰度增强官网介绍&预览 API文档 API调用方式 ApiExplorer平…

【译】Celery文档3:在Django中使用Celery

https://docs.celeryq.dev/en/latest/django/first-steps-with-django.html#django-first-steps First steps with Django Django3.1后默认支持Celery&#xff0c;不再需要安装额外的库。 Django项目布局大概是这样的&#xff1a; - proj/- manage.py- proj/- __init__.py- se…

书生·浦语大模型实战营Day01全链路开源体系

书生浦语大模型实战营-全链路开源体系 大模型 通用人工智能的重要途经 专用大模型–通用大模型 大模型&#xff1a;通用人工智能的重要途经&#xff08;专用大模型–通用大模型–多模态大模型–智能体&#xff09; InternLM发展历程 InternLM–书生 万卷&#xff08;数据…

海报生成器源码(Python版)

海报生成器源码&#xff08;Python版&#xff09; 效果图部分源码领取源码下期更新预报 效果图 部分源码 from flask import Flask, Response, request from flask_cors import CORS from flask_uploads import UploadSet, configure_uploads, IMAGES, patch_request_classimp…

使用ldirectord实现LVS健康检测

注意&#xff1a;在LVS/DR模式环境下&#xff0c;具体配置见上篇LVS/DR配置 1.1 ldirectord介绍 LVS监控: ldirectord 主要设计用于监控Linux虚拟服务器&#xff08;LVS&#xff09;架构中的服务器池状态。LVS是一种负载均衡解决方案&#xff0c;用于将网络流量和请求分发到多…

Enhancing Diffusion——利用三维透视几何约束增强扩散模型

概述 透视在艺术中被广泛研究&#xff0c;但现代高质量图像生成方法却缺乏透视精度。新的生成模型引入了几何约束&#xff0c;通过训练过程提高透视精度。这样可以生成更逼真的图像&#xff0c;并提高相关深度估计模型的性能。 最近的图像生成技术使研究人员能够创造性地进行…

点成分享 | 温度控制的艺术:TX150系列水浴中的稳定性与均匀性解析

前言 在实验室和工业生产中&#xff0c;温度控制对于确保实验结果的精确性和产品的高质量至关重要&#xff0c;尤其是针对温度敏感的样品和原材料&#xff0c;如蛋白酶等&#xff0c;微小的温度误差都会对实验结果可靠性和生产质量造成影响。而在控温性能中&#xff0c;稳定性…

自学Java要到什么程度才足够能力去实习和就业?

引言 Java&#xff0c;作为当今软件开发领域的主流编程语言之一&#xff0c;对于初学者而言&#xff0c;明确掌握到什么程度才能开始寻找实习和入职机会是至关重要的。这涉及到对Java知识体系的理解深度、技能掌握程度以及实际项目经验的积累。 本文将分别从实习和入职两个不…

学习VUE2第6天

一.请求拦截器 可以节流&#xff0c;防止多次点击请求 toast是单例 二.前置路由守卫 在Vue.js中&#xff0c;前置路由守卫是指在路由转换实际发生之前执行的钩子函数。这是Vue Router&#xff08;Vue.js官方的路由管理器&#xff09;提供的一种功能&#xff0c;允许开发者在用…

UNI-APP_拨打电话权限如何去掉,访问文件权限关闭

uniapp上架过程中一直提示&#xff1a;允许“app名”拨打电话和管理通话吗&#xff1f; uniapp配置文件&#xff1a;manifest.json “permissionPhoneState” : {“request” : “none”//拨打电话权限关闭 }, “permissionExternalStorage” : {“request” : “none”//访…

CAN总线介绍及在ZYNQ 7020中的应用

一、CAN总线协议介绍 1.CAN是 Controller Area Network 的缩写&#xff08;以下称为 CAN &#xff09;&#xff0c;是 ISO 国际标准化的串行通信协议。可以用来满足“多总线通信时&#xff0c;线束的数量过多”、“通过多个 LAN &#xff0c;进行大量数据的高速通信”的需要。…

设计数据库

一、设计数据库 ER图&#xff1a;Entity-Relation实体关系图 RDBMS关系型数据库管理系统里不支持多对多的关系&#xff0c;只支持一对一或一对多关系 1、数据库三大范氏 第一范式&#xff1a;每个字段不能再分 第二范式&#xff1a;每个表都有主键 第三范式&#xff1a;从…

FIFO Generate IP核使用——Native接口Basic页配置

Xilinx FIFO Generator IP核是一个经过全面验证的先入先出&#xff08;FIFO&#xff09;内存队列&#xff0c;专为需要按顺序存储和检索的应用而设计。该IP核为所有FIFO配置提供了优化解决方案&#xff0c;并在利用最小资源的同时实现最大性能&#xff08;高达500MHz&#xff0…

《Python编程从入门到实践》day19

#昨日知识点回顾 使用unittest模块测试单元和类 #今日知识点学习 第12章 武装飞船 12.1 规划项目 游戏《外星人入侵》 12.2 安装pygame 终端管理器执行 pip install pygame 12.3 开始游戏项目 12.3.1 创建Pygame窗口及响应用户输入 import sysimport pygameclass…

预编码算法学习笔记

预编码算法学习笔记 摘要&#xff1a; 本文将深入探讨预编码算法的学习要点&#xff0c;包括其基本概念、原理、实现方法以及在通信系统中的应用。通过详细的阐述和实例分析&#xff0c;帮助读者全面理解预编码算法&#xff0c;并掌握其在实际问题中的应用技巧。 关键词&…

vim与tmux配置文件及常用命令总结

一. 配置文件 1. .tmux.conf # 使用CtrlA作为前缀组合键 set -g prefix C-a unbind C-b bind C-a send-prefix# 支持鼠标操作 setw -g mouse on# 为了能够重新加载配置文件而无需重启tmux&#xff0c;可以绑定一个快捷键 bind r source-file ~/.tmux.conf \; display-message…

mysql linux远程连接失败处理

问题一&#xff1a;远程连接不上mysql&#xff0c;提示Access denied 一、通过下面命令连接不上数据库 mysql -uroot -p mysql -uroot -h 10.5.122.100 -P 3306 -p报错信息如下&#xff1a; ERROR 1045 (28000): Access denied for user ‘root’‘localhost’ (using passwo…

Android4.4真机移植过程笔记(三)

如果文章字体看得不是很清楚&#xff0c;大家可以下载pdf文档查看&#xff0c;文档已上传&#xff5e;oo&#xff5e; 7、安装加密APK 需要修改文件如下&#xff1a; 相对Android4.2改动还是蛮大的&#xff0c;有些文件连路径都变了: //Android4.2 1、frameworks/native/libs…

tableau基础学习——添加标靶图、甘特图、瀑布图

标靶图 添加参考线 添加参考分布 甘特图 创建新的字段 如设置延迟天数****计划交货日期-实际交货日期 为正代表提前交货&#xff0c;负则代表延迟交货 步骤&#xff1a;创建——计算新字段 把延迟天数放在颜色、大小里面就可以 瀑布图 两个表按照地区连接 先做个条形图&…