A common cause of performance problems is when request handling threads get hung up waiting for a resource from a resource pool that has become unresponsive. To limit this problem, you can set the ResourcePool’s creationTimeLimit and maxPendingCreations properties.

creationTimeLimit

When creationTimeLimit is set, if a resource creation fails and the attempt exceeded the value of creationTimeLimit in milliseconds, then the resource pool is disabled. In addition, before an attempt to create a resource occurs, a check is made to see if a resource creation attempt already in progress has exceeded the creationTimeLimit. If so, then the resource pool is disabled.

maxPendingCreations

If you set the maxPendingCreations property, then the resource pool has a limit on the maximum number of resource creation attempts that can be pending at one time. This can prevent a situation where all available request handling threads are tied up trying to create resources in an unresponsive resource pool.

If the maxPendingCreations property is set to a value other than zero, and:

then the resource pool is disabled.

Disabled ResourcePools

When a resource pool is marked as disabled, it can still attempt to create resources when a thread attempts to check out resources from the pool. However, only one thread at a time can do so. Any other threads are returned a ResourcePoolException. This prevents more than one thread at a time from getting hung on a disabled pool. The resource pool is not shut down; it is simply marked disabled so that threads seeking resources will know that the resource pool is not behaving properly. The pool is marked enabled as soon as there is a successful resource creation.

 
loading table of contents...