Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. The application's concurrency requirement.
  2. The average time taken to run a database query.
  3. The number maximum number of maximum connections the database server can support.

...

Property NameHow to Tune
Min. IdleConfigure this to match the expected minimum concurrency. The default value is 0.
Max. IdleThe value should be less that the Max. Active value. For high performance, tune Max. Idle to match the number of average, concurrent requests to the pool. If this value is set to a large value, the pool will contain unnecessary idle connections.
Max. Active

The maximum latency (approximately) = (P / M) * T ,

 where,

  •  M = Max. Active value
  • P = Peak concurrency value
  • T = Time (average) taken to process a query.

Therefore, by increasing the Max. Active value (up to the expected highest number of concurrency), the time that requests wait in the queue for a connection to be released will be decreased. But before increasing the Max. Active value, consult the database administrator, as it will create up to Max.Active connections at burst times from a single node, and the accumulated count of these active connections may not be possible to be handled by the DBMS.

Max. Wait

Adjust this value to a value slightly higher than the maximum latency for a request.

That is, Max. Wait = (P / M) * T + buffer time

Validation QuerySet "Validation Query" to a simple test query like SELECT 1
Test On BorrowWhen the connection to the database is broken, the connection pool does not know that the connection has been lost. As a result, the connection pool will continue to distribute connections to the application until the application actually tries to use the connection. To resolve this problem, set "Test On Borrow" to "true" and make sure that the "Validation Query" property is set.
validationIntervalThis parameter allows to control how frequently a given validation query is executed. By default it is set to 30 seconds. Deciding the value for the "validationInterval" depends on the target application behavior. If a larger value is set, the frequency of executing the Validation Query is low, which results in better performance (but for values larger than several seconds, this becomes negligible, as the validation query usually executes very fast). With a smaller value, a stale connection will be identified quickly when it is presented, this maybe required for systems where the connections should be instantly repaired in a case like a database server restart. Therefore, selecting a value for the this property is a trade-off and ultimately depends on what is acceptable for the application.

...