当前位置:网站首页>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查看是否修改成功,修改之前也可以查看
边栏推荐
猜你喜欢
随机推荐
shardingsphere data sharding configuration item description and example
力扣 636. 函数的独占时间
TCP段重组PDU
Simple Factory Pattern
Integer 线程安全的
Variable used in lambda expression should be final or effectively final报错解决方案
Singleton DCL (double check the lock) full han mode and the hungry
Better Scroll Y上下滚动无法上拉滚动解决办法
MVN 中配置flyway mysq
使用百度EasyDL实现智能垃圾箱
ByteDance Written Exam 2020 (Douyin E-commerce)
日期处理,字符串日期格式转换
Leetcode 70 stairs issues (Fibonacci number)
2022.8.8DAY628
Quectel EC20 4G module dial related
默默重新开始,第一页也是新的一页
install flask
The solution that does not work and does not take effect after VScode installs ESlint
【报错】Root Cause com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
字节跳动面试题之镜像二叉树2020