Set the minimum and maximum numbers according to the expected user load:
  • 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 number of threads to between 25% and 50% higher than the minimum to handle load spikes.

Performance testing offers an alternative guideline. Testing shows that PingFederate performs well when the server thread pool has 25 to 50 server threads per available CPU core, assuming sufficient memory. For example, if your PingFederate system has one CPU with four cores, the total available cores is four. In that case, the minimum thread value would be 100 and the maximum thread value would be 200.

Note:

This alternative guideline might not apply to larger systems. For example, if PingFederate is running on a system with 24 CPU cores, it doesn't 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.

For more information on managing memory for PingFederate, see Memory.

  1. Stop PingFederate.
  2. Edit the <pf_install>/pingfederate/bin/run.properties file.
    Tip:

    Consider making a backup copy of this file.

  3. Go to the following section, and change the thread number.
    
    # HTTP Server Thread Pool Settings
    # --------------------------------
    # The following properties control the minimum and the maximum number of threads used to configure PingFederate thread pools.
    #
    # Please refer to the performance tuning guide for further tuning guidance.
    pf.admin.threads.min=1
    pf.admin.threads.max=10
    pf.runtime.threads.min=10
    pf.runtime.threads.max=200
  4. Save your changes and restart PingFederate.
  5. For a clustered PingFederate environment, repeat the previous steps on each engine node as needed.