当前位置:网站首页>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查看是否修改成功,修改之前也可以查看
边栏推荐
- Service
- 【烂笔头】各厂商手机手动抓log
- 按图搜索1688商品接口(item_search_img-按图搜索1688商品(拍立淘接口)代码对接教程
- 顺序表删除所有值为e的元素
- SIGINT,SIGKILL,SIGTERM信号区别,各类信号总结
- Transaction concluded
- Singleton DCL (double check the lock) full han mode and the hungry
- Built-in macros in C language (define log macros)
- 我入职阿里后,才知道原来简历这么写
- DSP+ARM+FPGA高速PCIE/千兆网口信号仿真介绍
猜你喜欢
随机推荐
install flask
The Integer thread safe
搭载开源鸿蒙系统的嵌入式XM-RK3568工业互联方案
Quectel EC20 4G module dial related
按图搜索1688商品接口(item_search_img-按图搜索1688商品(拍立淘接口)代码对接教程
Silently start over, the first page is also a new page
leetcode 之 70 爬楼梯问题 (斐波那契数)
Altium designer software commonly used the most complete package library, including schematic library, PCB library and 3D model library
图论,二叉树,dfs,bfs,dp,最短路专题
排序第四节——归并排序(附有自己的视频讲解)
MongDb query method
常用测试用例设计方法之正交实验法详解
单例 DCL(double check lock) 饱汉模式和饿汉模式
学习小笔记---机器学习
P6 ali machine test of 2020 Fibonacci number
RK3568商显版开源鸿蒙板卡产品解决方案
分布式事务产生的原因
AD的library中 库文件后缀有.intlib .schlib .pcblib 的区别
Variable used in lambda expression should be final or effectively final报错解决方案
【Docker】Docker安装MySQL