When tuning the server thread pool, set the minimum and maximum number of threads to optimize PingFederate for your needs.
Testing has shown that PingFederate performs well when the server thread pool is sized between 25 and 50 server threads per available CPU core, assuming sufficient memory. For more information on managing your memory for PingFederate, see Memory.
This guidance might not be advisable for scaling on larger systems. For example, if you are running PingFederate on a system with 24 CPU cores, it does not make sense to size the thread pool at a minimum of 600 threads and a maximum of 1200 unless you expect to normally handle at least 800 concurrent requests.
- Stop PingFederate.
Consider making a backup copy of this file.
Go to the following section, and change the thread number as needed.
<Get name="ThreadPool"> <Set name="minThreads" type="int">100</Set> <Set name="maxThreads" type="int">200</Set> <Set name="detailedDump">false</Set> </Get>
Modify the thread number using the following guidelines:
- Set minThreads to (available CPU cores * 25)
- Set maxThreads to (available CPU cores * 50)
If your PingFederate system has 1 CPU with 4 cores, the total available cores is 4. The configuration would be as follows.
<Get name="ThreadPool"> <Set name="minThreads" type="int">100</Set> <Set name="maxThreads" type="int">200</Set> <Set name="detailedDump">false</Set> </Get>Tip:
Set the minimum number of threads to between 75% and 100% of the number of requests you expect the system to handle most often. Set the maximum to between 25% and 50% higher than the minimum to handle load spikes.
- When finished, save your changes. Restart PingFederate.
- For a clustered PingFederate environment, repeat these steps on each engine node as needed.