当前位置:网站首页>jmeter并发数量以及压力机的一些限制
jmeter并发数量以及压力机的一些限制
2022-08-09 06:59:00 【风华绝代一只猫】
作为测试需要了解什么?不需要太难,但是也不能啥都不懂,不懂就没办法做出正确的测试,要知道什么是会影响测试结果的,再深的就需要自己去了解,我也不懂。
一、线程和进程的区别
线程:线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。
我们在jmeter中看到有个线程组,哎就是这玩意儿
Q:一个http请求就是一个线程吗?
A:是的,一个http请求就是一个线程
Q: Java的服务每收到一个请求就新开一个线程来处理吗?
A:受到tomcat启动的“最大线程数”和“接受排队请求个数”的制约。当已经开启的线程数目小于“最大线程数”时,自然是来一个请求,就会开启一个线程来处理这个请求。但是一旦超过了最大线程数,而又小于允许排队个数,就可以在那排着队,等待着前面的请求执行完了,空出来线程再分配给这些处于等待状态的请求。而如果处于等待的http请求已经等于了允许等待个数,便会直接拒绝此次请求。
进程:进程 – 资源分配的最小单位,我们打开浏览器,实际上就是打开了一个进程,它就会被载入内存空间,并在逻辑上产生一个独立的实例,这就是进程。
当我打开2个 jmeter页面程序,在资源管理器的进程中有两个java的程序
当我在任意一个jmeter中添加线程组和线程的时候,进程并不会增加。这是因为,一个进程中可以并发多个线程。
二、jmeter可支持多少并发线程
Q:WINDOWS操作系统中1个进程可以允许最大的线程数是多少?
A:默认情况下,一个线程的栈要预留1M的内存空间
而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程
Q:linux操作系统1个进程可以运行多少线程数?
A:每个进程都有各自的私有用户空间(0-3G),这个空间对系统中的其他进程是不可见的。每个进程运行的时候,都会拿到4G的虚拟内存,在32位Linux下,其中3G是交给用户的,1G是交给内核的
Q:是不是说一个jmeter进程启动2048个线程?
A:只是理论上,但是内存当然不可能完全拿来作线程的栈,所以实际数目要比这个值要小,你也可以通过连接时修改默认栈大小,将其改的比较小,这样就可以多开一些线程。 如将默认栈的大小改成512K,这样理论上最多就可以开4096个线程。
Q:jmeter平均响应时间和TPS的计算方法是什么呢?
A:平均响应时间=所有sample样本响应时间和/样本个数
例如:20s/100个 = 0.2s
TPS=(sample样本数)/(结束时间-开始时间)
例如:100个/2s = 50tps/s
Q:如何控制jmeter发出的并发数?
A:线程数为100的时候,run_up时间为1s,如果平均响应时间小于1s,则可以加大线程数,不超过2048的线程理论值。因为tps的计算方法是按照秒计算,实际上平均响应时间小于3s都在可以接收范围之内。一味的追求tps的数据,对于服务器有要求,对压力机也有要求,且对网络带宽也有要求,如果想要在1M带宽下达到过高的tps无疑是痴人说梦。
Q:那多少带宽可以支持多少线程数?
A:1Mbps宽带理论上可以传输128kb的数据,具体计算方式为 1*1024 =1024KB 1Mbps的bit 换算为byte 为8:1 ,则1024/8=128KB
如果一个http请求,请求数据为50个汉字,则128KB*1024/(50*2)(一个汉字2个字节)=1310个请求/s
如果每秒请求10次,则是1310/10=131个请求/s
!注意:这也是理论上能达到的处理请求数量,根据请求的图片和数据量的大小,数据是有波动的。
用户可能下载图片,每秒下载一次图片大小为10kb,计算公式为 128/10 =12.8 人
Q:那我们还需要关注测试压力机的cpu等信息吗?
A:这是肯定的,当cpu被其他的程序所占用的时候,进程中的线程无法获取足够的cpu内存等支持,也是会阻塞排队,影响测试结果的,最好cpu的占用率维持到80%以下,确保压力机本身请求发起是有效的且无丢失的。还要确认程序是否发起了足够的线程。
Q:为什么我没有启动太多线程,但是jmeter报错堆栈溢出呢?
A:可以修改jmeter 内存 参数设置,编辑jmeter.bat set HEAP=-Xms1g -Xmx1g -XX:MaxMetaspaceSize=1024m 保存后(1024的倍数),打开jconsole查看是否修改成功,修改之前也可以查看
边栏推荐
- 力扣 636. 函数的独占时间
- 当酷雷曼VR直播遇上视频号,会摩擦出怎样的火花?
- 【烂笔头】各厂商手机手动抓log
- 虚拟机网卡报错:Bringing up interface eth0: Error: No suitable device found: no device found for connection
- 细谈VR全景:数字营销时代的宠儿
- APP商品详情源数据接口(淘宝/京东/拼多多/苏宁/抖音等平台详情数据分析接口)代码对接教程
- 单例 DCL(double check lock) 饱汉模式和饿汉模式
- Rsync常见错误
- XxlJobConfig分布式定时器任务管理XxlJob配置类,替代
- mysql summary
猜你喜欢
随机推荐
Simple to use Lambda expressions
查看日志常用命令
日期处理,字符串日期格式转换
leetcode 之盛水问题
高德地图JS - 已知经纬度来获取街道、城市、详细地址等信息
【ROS2原理8】节点到参与者的重映射
Distributed id generator implementation
高项 03 项目立项管理
bzoj 5333 [Sdoi2018]荣誉称号
Error: flask: TypeError: 'function' object is not iterable
MUI无法滚动?完美解决
composer 内存不足够
分布式id 生成器实现
基于布朗运动的文本生成方法-LANGUAGE MODELING VIA STOCHASTIC PROCESSES
P6阿里机试题之2020 斐波那契数
CMake中INSTALL_RPATH与BUILD_RPATH问题
cut命令的使用实例
网络学习总结
细谈VR全景:数字营销时代的宠儿
【Docker】Docker安装MySQL