首先,LR的虚拟用户可以设置为以独立线程运行还是独立进程运行。
其次,如果以独立线程运行,那么DLL只被加载一次,也就是白加载到主进程的地址空间里;你的虚拟用户是各个不同的线程,他们都访问同样的主进程的地址空间中的DLL拷贝,所以你要吧DLL设计为线程安全的。
最后,如果是以独立进程运行,那么就不需要考虑线程安全了。 我是新手,,看不懂。。学习了 To 楼主:
你所说的不是Loadrunner的bug,是你的用法不对。LoadRunner在跑虚拟用户的时候是每50个用户会启动一个进程(LR说明书有,通过任务管理器也能观察到),楼主代码里面在写日志文件的时候用的是线程锁而不是进程锁,因此50个用户不会出问题,100个用户由于启动了两个进程在并发时当然有可能出问题。
另外,你用的是UDP,我敢肯定你的发包程序本身就不是线程安全的,要是你改成TCP还会出更多的错误。用写DLL方式测C/S的时候,DLL里面申请的变量(包括socket),一定要做到线程安全才行,请参考核心编程的线程本地存储TLS这一节,否则会出意想不到的错误。
还有,写DLL的时候还要在dllmain函数里面对DLL_PROCESS_ATTACH,DLL_THREAD_ATTACH,DLL_THREAD_DETACH,DLL_PROCESS_DETACH单独进行处理。 原帖由 zengyixun 于 2008-12-2 17:46 发表 http://bbs.51testing.com/images/common/back.gif
LR做c/s是挺烦的,一个测试工具这么多bug,是不是他们公司自己的测试做得不好造成的,让我们怎么相信他们呢,呵呵,我这几天也在测UDP的的应用,send是还简单的啦,我都没有你的烦恼,如果你这种只关系到服务器的话, ...
to zengyixun:当你真正理解了LoadRunner的运行机制后就不会有这种想法了:) ,LR测C/S要饶不少弯,不过用熟了以后比直接写测试代码还是要快得多,并且比较稳定,事后数据分析功能强。 原帖由 winmeeasy 于 2008-12-10 10:47 发表 http://bbs.51testing.com/images/common/back.gif
To 楼主:
你所说的不是Loadrunner的bug,是你的用法不对。LoadRunner在跑虚拟用户的时候是每50个用户会启动一个进程(LR说明书有,通过任务管理器也能观察到),楼主代码里面在写日志文件的时候用的是线程锁而不是进 ...
细心! 果然强人多哈 我也在慢慢学:hug: 呵呵,这个帖子含金量高,应该加精不能沉!
回复 24# 的帖子
你这个内容:50个用户会启动一个进程,这个信息很重要,但是static CMutex sCSFile;//共享互斥访问,CMutex就是进程锁,不是线程锁(MSDN上面说的很明白)。。。。。。。但我不知道为什么Loadrunner50个用户就会启动一个进程而不是线程,我写程序启动可以启动500个线程都没事,为什么那样做呢?
好,即使按照你所说的,那如果dll是线程安全的,那么我还要设计进程安全,这不是很麻烦。。。。。。。
回复 26# 的帖子
CMutex就是线程和进程都是安全的,我晚上再回去试试................ 是的,我也就是开开玩笑随便一说,因为无论LR,Winrunner,QTP还是以前用IBM 的工具,感觉工具自身的稳定性都不是太好,不过最核心的问题,人家还是解决了的!原来每50个就会启一个进程,这就解释了LZ的疑惑了!多谢winmeeasy,我这人就是立场不坚定!:lol 原帖由 sqlserveroracle 于 2008-12-10 16:39 发表 http://bbs.51testing.com/images/common/back.gif你这个内容:50个用户会启动一个进程,这个信息很重要,但是static CMutex sCSFile;//共享互斥访问,CMutex就是进程锁,不是线程锁(MSDN上面说的很明白)。。。。。。。
但我不知道为什么Loadrunner50个用户就会启 ...
CMutex是进程锁(上面的帖子我说错了,sorry:) ),static CMutex sCSFile;创建的是匿名进程锁,当LR启动两个进程时,每个进程拥有的锁可能不是同一个了(很有可能是两个匿名进程锁)你应该在构造函数里面指定唯一名字,这样可以保证LR启动的进程用的是同一把锁。其实用Win32的CreateMutex在进程attach的时候创建要更好些。
经典,强烈要求加精
经典,强烈要求加精LR8.1 运行脚本时会自动退出会不会是BUG
我用LR8.1 运行脚本时会自动退出操作系统windowsXP sp2IE6.0 学习一下,看是什么问题 我们的脚本最多也执行过 36小时 但是也没有出现LZ描述的类似的问题或许测试场景活 测试环境不一样LR的弊端
LR的弊端:1.录制不准确,可能遗漏真正的性能点;2.没有录制事务间的通信。 原帖由 fmsbai5 于 2008-12-12 16:56 发表 http://bbs.51testing.com/images/common/back.gifLR的弊端:1.录制不准确,可能遗漏真正的性能点;2.没有录制事务间的通信。
我觉得不能光靠录制的吧,因为只有你知道你自己关注什么东西啊,所以主要还是要自己写 学习了 高手如云,学习了~ :victory: 留名
真是质量贴
我也有同步异步问题
但是java的,因为不确定read的大小,所以很难判断是否read完
这样会一直阻塞下去
就无法测并发了