我目前正在使用Visual Studio2010编写一个利用负载测试的负载测试应用程序。负载测试将在同一台机器上模拟20个用户,我需要在所有模拟用户之间在内存中共享一些数据。
令我惊讶的是,我找不到回答以下问题的文档:
是什么将每个虚拟用户的运行上下文与其他用户分开?每个虚拟用户都在自己的进程中运行测试吗?也许在它自己的应用程序域中?或者只是在它自己的线程上?我需要知道,因为如果每个用户都在自己的进程中运行测试,那么所有的内存缓存都不是共享的,而是为每个用户创建的,而不是为所有用户创建一次,这对我来说是不好的。
发布于 2011-01-06 06:02:32
您可以使用Process Explorer (http://technet.microsoft.com/en-us/sysinternals/bb896653,它是任务管理器的高级版本)来获取答案。
运行Visual Studio负载测试并打开Process Explorer。检查是否正在创建新进程。然后找到Visual Studio进程并双击。然后选择.NET Performance选项卡,它应该会显示进程中所有AppDomains的列表。
顺便说一句,今天我们发布了一个名为StresStimulus - http://stresstimulus.stimulustechnology.com的Fiddler负载测试扩展。其中我们将所有虚拟用户保存在同一进程中的不同线程上。
发布于 2011-01-10 07:53:16
这是迄今为止我找到的最接近答案的答案。
http://blogs.msdn.com/b/billbar/archive/2007/06/13/coded-web-tests-and-web-test-plug-ins-should-not-block-the-thread.aspx
答案是每台机器只有一个进程进行负载测试,使用了多个线程,但虚拟用户被“优化”为每个线程多个工作。
对于您想要做的事情,使用静态构造函数创建一个静态类将在所有虚拟用户之间获得一个共享的内存块。需要注意的是,这是一个多线程环境,应该对您的代码采取适当的谨慎态度。
https://stackoverflow.com/questions/4608254
复制相似问题