Good Day All,
I am having a problem with a connection pool and I was hoping for some guidance.
I have defined the connection pool below for two deployed applications to use.
When I bounce the server I can see that it immediately crates 100 connections
to the DB. (I am ok with this, but that is not what is specified in the
config) Then when I access the application repeatedly very quickly new
connections to the DB are created each time a page is called till it reaches
about 150 and then future calls fail with the message
"com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Too many
connections” logged by the server.
If we don’t place any extra load on the server the number of connections to the
DB are reduced to 1 or 2 after 24 hours and you get the error "Timeout: Pool
empty. Unable to fetch a connection in 30 seconds, none available[size:100;
busy:100; idle:0; lastwait:30000].” from one of the applications and the other
application continues to work just fine.
I believe that the DB, MySQL, is dropping the connection, but tomcat does not
know that it has been dropped.
I am looking for some guidance on how to tune this configuration. Any
suggestions?
<Resource
name="jdbc/PDB"
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
initialSize="10"
maxTotal="100"
maxIdle="5"
maxWaitMillis="10000"
username=“xxxxxx"
password=“xxxxxx"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://xxxxx.xxxxxx.us-east-1.rds.amazonaws.com”/>
Server version: Apache Tomcat/8.0.20
Server number: 8.0.20.0
OS Name: Linux
OS Version: 3.14.35-28.38.amzn1.x86_64
Architecture: amd64
JVM Version: 1.7.0_79-mockbuild_2015_04_22_23_18-b00
JVM Vendor: Oracle Corporation
Thanks,
Doug