Network latency tends to be a common cause for performance issues when dealing with view provisioning. Tracing individual resource adapters can help you determine what is causing performance problems.
To improve provisioner performance, do the following:
Set the provisioner.maxThreads parameter in the Waveset.properties file to limit the maximum number of threads that are started to perform parallel resource provisioning operations each time a user is created, modified, or deleted.
The default value is 10, which generally provides optimal performance. Specifying a value greater than 20 significantly degrades the provisioner’s performance.
For example, if a user has 15 resource accounts, a maximum of ten provisioner threads are started to simultaneously perform resource provisioning operations on ten resource accounts. The remaining five resource accounts will not be modified until the first ten threads have completed resource provisioning operations.
In a different example, if you are modifying two users, and each user has two resource accounts, four provisioner threads might be used to update those resources.
Increasing the provisioner.maxThreads value can help throughput when users have many resource accounts. However, specifying a very large value might create many provisioner threads, which can degrade performance on the server as a whole.
Configure quota settings in the Waveset.properties file to control the number of concurrent operations (such as reprovisioning) a user can execute for a specific task. Increasing the number of concurrent actions can help more operations complete faster, but trying to process too many actions at once might cause bottlenecks.
You can create configuration sets on a per-pool basis. For example, if you create configuration A, configuration B, and configuration C, when you create a TaskDefinition (workflow), you can assign a specific pool configuration to the workflow from the configurations that you defined.
The following example shows the quota settings that limit user bob to running one reprovisioning task at a time:
Quota.poolNames=ReProvision,Provision Quota.pool.ReProvision.defaultLimit=1 Quota.pool.ReProvision.unlimitedItems=Configurator Quota.pool.ReProvision.items=bob,jan,ted Quota.pool.ReProvision.item.bob.limit=1 |
To enforce the task quota, reference poolName in a TaskDefinition. The format is as follows:
<TaskDefinition ... quotaName=’{poolName}’..>
Most users start only one task at a time. For proxy administrators who perform reconciliation or Active Sync tasks, set the task quota higher.
Avoid using the Configurator user for reconciliation and Active Sync tasks. The Configurator has access to unlimited tasks and can monopolize available resources, which adversely affects concurrent processes.