LR里组 vusers 进程 线程的关系
上一篇 /
下一篇 2007-09-17 10:39:15
/ 个人分类:性能测试(收集)
如果是线程安全的协议,在一个组(进程)里并发多个vusers,可以不用开那么进程。这可以减少系统的开销。
如果不是线程安全的协议,我们需要开多个进程来处理Vusers。这样势必增加系统的开销。
其实对现在的硬件来说,基本上客户端成为瓶颈的机会不是很大。(除非这公司太穷了)
^_^
这里我做了个实验,画了一张表,来形象的说明一下组/vusers/线程/进程的关系。
注:这里,我假定的是10vsuers:
设置vusers按进程还是线程运行 | Vusers(个/组) | 组(个) | mmdrv.exe中的线程数(个/组) | Mmdrv.exe进程(个) | 平均每个进程占的内存(k) | Mmdrv.exe占有内存总数(k) |
线程 | 10 | 1 | 12 | 1 | 7,500 | 7,500 |
线程 | 1 | 10 | 3 | 10 | 5,150 | 51,500 |
进程 | 10 | 1 | 1 | 10 | 4,676 | 46,760 |
进程 | 1 | 10 | 1 | 10 | 5,150 | 51,500 |
我这里脚本都是一样的。
大家如果自己做实验,内存可能会不一样。
在表里,我们可以很清楚的看到,进程多的时候,占用内存肯定是多的。
如果在同一组里开多个线程,占用内存就少得多。
我们还要注意一个细节就是在用线程来运行vusers的时候,每个进程中会多出几个线程来。
这多出来的很个进程在做什么,我没有查它的API,我想可能是维护进程之间的运行。
很显然的,还有个问题,就是哪个压力更大。
这个问题也有些人在问,我想这个应该是很明显的吧。
其实对服务器来说,只要是10个用户都在正常
工作,而速度不会受到本地硬件的影响。
对服务器的压力是一样的。
这么来思考:
假设来说。
我们是从客户端来发
数据库的,10个用户,如果一秒钟发20个数据包。
那对服务器来说,收到的数据包都是一样多的。所以压力也会是一样的。
那会不会存在在同一个进程里开10个线程速度更慢呢。
这个,我以为不会的。
所以我认为压力是一样的。
收藏
举报
TAG: