下面我们介绍一下这三个设置线程和进程之间的关系:
首先说一下run-time settings中的设置与controller中单场景和场景组的关系:
要记住虚拟用户是以线程还是进程方式运行是在Vug->run-time settings中设置的;
其次在controller中如果使用单场景运行,那么该场景中无论有多少个脚本、多少个负载生成器,运行这些脚本的虚拟用户均依照Vug->run-time settings中设置的线程还是进程方式运行;但是如果在controller中如果以场景组方式运行时,每个场景组均会作为一个进程被启动,而每个组中的用户又是按照Vug->run-time settings中设置的线程还是进程方式运行。
再说一下在controller中使用IP欺骗时,在专家模式下的tools->options->general->multiple IP address mode中的设置:
如果选择的是进程方式:
1、如果这个ip是在单场景中,那么有几个不同的ip的负载生成器就会启动几个进程,每个负载生成器的虚拟用户的运行方式仍然按照Vug->run-time settings中设置的线程还是进程方式运行
2、如果是在场景组中运行,这就要看场景组是如何设置的了,有两种情况:
a、每个场景组中添加一个虚拟ip,这时运行每个场景组时只启动一个进程 b、每个场景组中添加多个虚拟ip,这时运行每个场景组时,每个场景组启动一个进程,每个ip启动一个进程,每个ip的虚拟用户的运行方式按照Vug->run-time settings中设置的线程还是进程方式运行
如果在controller中使用IP欺骗时,在专家模式下的tools->options->general->multiple IP address mode中选择的线程方式: 1、如果这个ip是在单场景中,那么对于不同的ip的负载生成器只会启动一个进程,每个负载生成器的虚拟用户的运行方式仍然按照Vug->run-time settings中设置的线程还是进程方式运行2、如果是在场景组中运行,每个场景组启动一个进程,所有ip已线程的方式在组进程中运行,每个ip的虚拟用户的运行方式按照Vug->run-time settings中设置的线程还是进程方式运行
LoadRunner中的多进程和多线程
Loadrunner支持多线程环境,使用多线程的方法能使每台负载生成器运行更多的VU,但是只有支持线程安全的协议,才能使用Loadrunner的VU并发方式。
以下协议不能支持线程并发
Sybase-Dblib,Infomix,Tuxedo,and PeopleSoft-Tuxedo
当使用进程并发是,在任务管理器中有mdrv.exe的进程,比如下图,用10个VU用户并发,就会在任务管理器中出现10个mmdrv进程
如果以多线程方式并发,只会出现一个mmdrv进程,一个进程可以支持50VU的线程并发。
Loadrunner的参考帮助还说明了,如果采用多线程方式并发,Load Generator将会比多进程支持更多的用户,具体的一个VU占用内存的取值根据Loadrunner的版本不同而不同。