Configuring worker threads
Modify the minimum and maximum number of worker threads to increase performance.
About this task
PingAccess engines use a pool of worker threads to process requests received on the runtime ports, and another pool to process requests from agents. These worker threads do the initial handling of request processing within PingAccess. By default, PingAccess starts with a minimum of 5 worker threads in each pool. New threads are created as needed, with the maximum size being unlimited.
Maintenance of the pool size is such that if the number of threads in the pool exceeds the value of engine.httptransport.coreThreadPoolSize
or agent.httptransport.coreThreadPoolSize
, threads idle for 60 seconds are terminated and removed from the pool.
The idle timeout value is not modifiable. However, if the values of
engine.httptransport.coreThreadPoolSize
and
engine.httptransport.maxThreadPoolSize
are the same, a fixed sized pool is created and idle threads are not terminated and removed. The same is true for agent.httptransport.coreThreadPoolSize
and agent.httptransport.maxThreadPoolSize
.
Unless you want to restrict the maximum number of concurrent requests admitted for processing by a PingAccess engine, you should leave engine.httptransport.maxThreadPoolSize
and agent.httptransport.maxThreadPoolSize
set to unlimited (-1).
For engine.httptransport.coreThreadPoolSize
and agent.httptransport.coreThreadPoolSize
, the defaults should be sufficient for all deployments. The creation of new threads is efficient, so it is unlikely that end users could detect any improvement in performance by increasing the values for these properties. Increasing these values also increases the baseline memory footprint of PingAccess due to the increase in memory for the additional threads.
These worker threads do not perform any input or output processing. Incoming and outgoing communication (I/O) is performed by two additional pools of threads. One pool handles request from, and responses to, clients; another handles requests to, and responses from, application servers proxied by PingAccess. These pools use a fixed number of threads and by default, the number of threads in these pools is equal to twice the number of logical CPU cores on the host computer.
To modify the number of worker threads:
Steps
-
Open the
run.properties
file located in theconf
directory of your PingAccess deployment. -
Add or edit the following properties, where <N> represents the number of worker threads:
engine.httptransport.maxThreadPoolSize=<N>
and
agent.httptransport.maxThreadPoolSize=<N>