当前位置:网站首页>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查看是否修改成功,修改之前也可以查看
边栏推荐
猜你喜欢
分布式事务产生的原因
力扣第 305 场周赛复盘
错误:为 repo ‘oracle_linux_repo‘ 下载元数据失败 : Cannot download repomd.xml: Cannot download repodata/repomd.
The working principle of the transformer (illustration, schematic explanation, understand at a glance)
学习小笔记---机器学习
leetcode 之 70 爬楼梯问题 (斐波那契数)
什么是分布式事务
Fragments
分布式id 生成器实现
leetcode 之盛水问题
随机推荐
分布式事务的应用场景
Inception V3 闭眼检测
The JVM thread state
【Shell】查找进程的pid并根据pid获取该进程所占用的端口号以及该进程在系统中所下达的指令名称
P7 Alibaba Interview Questions 2020.07 Sliding Window Algorithm (Alibaba Cloud Interview)
The division principle summary within the collection
详解C语言中的wait()函数和waitpid()函数
Service
查看日志常用命令
Fragments
常用测试用例设计方法之正交实验法详解
mysql summary
【ROS2原理8】节点到参与者的重映射
Common Oracle Commands
C语言的内置宏(定义日志宏)
vlucas/phpdotenv phpdotenv获取变量内容偶尔出现返回false
SIGINT, SIGKILL, SIGTERM signal difference, summary of various signals
先序遍历,中序遍历,后序遍历,层序遍历
集合内之部原理总结
Import the pycharm environment package into another environment