eG Monitoring
 

Measures reported by TomcatDataSrcTest

A data source is an object that enables a Java Database Connectivity (JDBC) client, such as an application server, to establish a connection with a database. A connection pool is a factory for getting connections to different physical data sources.

If a connection pool does not have enough idle/unused connections, Tomcat may not be able to entertain database connection requests from applications. This in turn can significantly degrade application performance. The presence of too many idle connections in a pool can also adversely impact application performance, as such connections are avoidable resource hogs!

  • To ensure peak performance of Tomcat applications at all times, administrators have to make sure that the connection pools are sized according to their usage. By providing administrators with actionable information on the usage and configuration of each pool, the TomcatDataSrcTest test rapidly turns user attention to pools that are incorrectly sized and could hence be a threat to application performance. This way, the test urges administrators to right-size pools, so that application-database interaction is not interrupted.

  • Outputs of the test:One set of results for every connection pool configured on the Tomcat server being monitored.

    The measures made by this test are as follows:

    Measurement Description Measurement Unit Interpretation
    Initial_size Indicates the number of connections that were open at this pool's start-up. Number

     

    Num_active Indicates the number of established connections in this pool that are in use currently. Number

     

    Num_idle Indicates the number of idle connections in this pool. Number

     

    Max_idle Reports the maximum number of idle connections that this pool can contain. Number

    When configuring a connection pool using the server.xml file, a maxIdle parameter is typically set. This measure reports the value set for the maxIdle parameter.

    If this value is consistently close to or equal to the value of the Num_idle measure of a pool, then it means that there are too many idle connections in that pool. As idle connections are a resource drain, it is best to keep them at a minimum. So, you may want to reduce the maxIdle configuration of that pool. Doing so will ensure that the pool drops all idle connections in excess of the configured maxIdle value, thereby reducing the risk of excessive resource consumption.

    Min_idle Reports the minimum number of idle connections that should be present in this pool at any given point in time. Number

    Ideally, this value should be equal to or greater than the value of the Num_idle measure.

    Max_total Indicates the maximum number of established connections that this pool can contain. Number

    Ideally, the value of this measure should be greater than or equal to the sum of the values of the Num_active measure and Num_idle measure.

    DataSource_type Indicates the type of this pool.  

    The values that this measure can report and their corresponding numeric values are listed below:

    Measure Value Numeric Value
    DBCP 0
    Tomcat JDBC 1
    Druid 2
    Hikari 3
    C3P0 4
    BoneCP 5

    Note:

    By default, this measure reports the Measure Values listed in the table above to indicate the data source type. In the graph of this measure however, the same is indicated using the numeric equivalents only.

    Per_idle Indicates the percentage of maximum connections that are actually idle in this pool. Percent

    If the value of this measure is over 50%, it implies that more than half of the maximum number of connections a pool can have are currently idle. While its good to have adequate idle connections in a pool, if there are too many idle connections, server resources may be unnecessarily drained. To avoid this, its best to limit the number of idle connections a pool can have using the maxIdle setting in the server.xml file.

    Per_active Indicates the percentage of maximum connections that are actively used in this pool. Percent

    If the value of this measure is close to 100%, it is cause for concern. This is because, it implies that there are hardly any idle connections in the pool. Without sufficient idle connections, a pool may not be able to service connection requests. As a result, applications may not be able to interact with the database backend, which in turn can adversely impact application performance. This is why, ideally, the value of this measure should be low.

    Avail_conn Indicates the percentage of maximum connections that are neither used nor idle. Number

    This measure is computed using the following formula:

    Max_total (-) Num_active (-) Num_idle

    Per_avail_conn Indicates the percentage of maximum connections that are neither used nor idle. Percent

    This measure is the value of the Avail_conn measure expressed as a percentage.