扩大Desktop Heap以增加创建Apartment的个数。
a)HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/Memory Management/SessionViewSize
缺省是48M, 是系统范围的desktop heap 的大小,将SessionViewSize改成96M来增加整个系统范围内的desktop heap的大小。
b)HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/SessionManager/SubSystems/Window的值:
%SystemRoot%/system32/csrss.exe
ObjectDirectory=/Windows SharedSection=1024,3072,512 . . . . . .
1024, 3072, 512 是default setting, 将512改成4096, 以增加可创建窗口的数量。
说明:每个系统Desktop对象都有heap 与之对应,Desktop对象使用heap(堆)存储菜单、字符串和窗体等。系统从核心缓存(48M)中分配desktop heap。一个WINDOWS操作系统可以有多个desktop heap。
因为在非交互式工作站下,SCM为一个用户账号的每一个服务进程创建一个新的desktop,较大的desktop heap值将减少此系统可以服务的用户账号数量。
全部的desktop heap 必须适应于48M系统范围的缓存。
当发生组件创建失败/超出内存的错误时,可以适当加大这些键值,如将SharedSection=1024,3072,512的三个数字改为2048,3072, 2048。
为什么Windows系统中的CPU、内存等资源仍然充足,但是模拟的用户数量却上不去?
在Windows计算机的标准设置下,操作系统的默认限制只能使用几百个Vuser,这个限制与CPU或内存无关,主要是操作系统本身规定了默认的最大 线程数所导致。要想突破Windows这个限制,须修改Windows注册表。以Windows XP Professional为例。
(1)打开注册表后,进入注册表项HKEY_LOCAL_MACHINE中的下列关键字:System/CurrentControlSet/Control/Session Manager/SubSystems。
(2)找到Windows关键字,Windows关键字如下所示:
%SystemRoot%/system32/csrss.exe bjectDirectory=/Windows
SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1
ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2
ProfileControl=Off MaxRequestThreads=16
SharedSection=1024,3072,512关键字的格式为xxxx,yyyy,zzz。其中,xxxx定义了系统范围堆的最大值(以KB为单位),yyyy定义每个桌面堆得大小。
(3)将yyyy的设置从3072更改为8192(即8MB),增加SharedSection参数值。
通过对注册表的更改,系统将允许运行更多的线程,因而可以在计算机上运行更多的Vuser。这意味着能够模拟的最大并发用户数量将不受Windows操作系统的限制,而只受硬件和内部可伸缩性限制的约束。