Opalis Integration Server imposes a default limit of 50 concurrent policy instances running on a single Action Server in order to prevent depletion of the Windows resource known as Desktop Heap which causes unexpected execution results such as process terminations and inability to allocate necessary resources to perform just about any kind of task.
Error messages returned or exceptions captured in Action Server or Policy Module logs include "Out of memory", "Not enough storage" and other messages that make reference to an inability to allocate a resource such as a Named Pipe or Windows Socket.
Increasing the maximum number of policy instances that can run concurrently on a single Action Server consists of two steps:
- Increase Windows Desktop Heap for desktops in the non-interactive windows stations.
- Increase the value of allowed concurrent policy instances using the Action Server Policy Throttling command line utility (aspt.exe) included with the Opalis Integration Server Management Server.
Increasing the Desktop Heap is a Windows system wide change and requires a reboot. More information including an explanation of Desktop Heap can be found in the following article:
KB184802 - User32.dll or Kernel32.dll fails to initialize
Increasing Desktop Heap
Opalis Integration Server processes all use varying amounts of Desktop Heap depending on which objects and how many objects exist in each policy. As a guideline, calculations are set on the basis of each policymodule.exe consuming 10KB of Desktop Heap. As outlined in article KB184802, Desktop Heap for the non-interactive desktops is identified by the third parameter of the "SharedSection=" segment of the following registry value:
The default data for this registry value will look something like the following:
%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16
The value to be entered into the third parameter of the "SharedSection=" segment should be based on the calculation of:
(number of desired concurrent policies) * 10 = (third parameter value)
Example: If it is desired to have 100 concurrent policy instances, then 100 * 10 = 1000, rounding up to a nice memory friendly number gives us 1024 as the third parameter resulting in the following update to be made to the registry value:
Because the Service Control Manager creates a new desktop in the noninteractive window station for every service process that is running under a user account, a larger desktop value for the third parameter of the "SharedSection=" segment will reduce the number of user account services that can run successfully on the system.
Increasing Maximum Concurrent Policy Instances
Increasing the maximum number of concurrent policy instances running on any given Action Server is accomplished by executing the Action Server Policy Throttling utility (aspt.exe) located on the Opalis Integration Server Management Server computer in the Management Service installation folder (default = C:\Program Files\Opalis Software\Opalis Integration Server\Management Service).
Syntax for running aspt.exe is as follows:
aspt.exe <ActionServer> <NumberOfPolicies>
aspt.exe COMPUTER1 100
The above will change the Action Server named COMPUTER1 to allow a maximum of 100 concurrent policy instances to be running.
aspt.exe * 200
The above will change all Action Servers to allow a maximum of 200 concurrent policy instances to be running.
Each Action Server affected by a change using aspt.exe must have the OpalisActionService service restarted for the changes to take effect.
Article ID: 2102398 - Last Review: Feb 7, 2011 - Revision: 1