On 7/1/16 7:14 AM, Nir Dweck wrote: > -----Original Message----- > From: Phil Steitz [mailto:phil.ste...@gmail.com] > Sent: Thursday, June 30, 2016 6:57 PM > To: Tomcat Users List > Subject: Re: tomcat 7 connection pool validation interval > > > >>> On Jun 30, 2016, at 9:32 AM, Nir Dweck <n...@vasco-de.com> wrote: >>> >>> I am using tomcat connection pool (tomcat 7) in my application (java >>> application) to connect to a remote Oracle DB on an Azure machine. My >>> connection pool configuration is as follow: >>> >>> PoolProperties p = new PoolProperties(); >>> p.setUrl(connString); >>> p.setUsername(user); >>> p.setPassword(password); >>> p.setDriverClassName("oracle.jdbc.OracleDriver"); >>> p.setValidationQuery("SELECT 1 from dual"); >>> p.setValidationInterval(1 * 60000/2); >>> p.setTimeBetweenEvictionRunsMillis(1 * 60000/2); >>> p.setTestOnBorrow(true); >>> p.setTestWhileIdle(true); >>> p.setMinIdle(10); >>> p.setInitialSize(10); >>> However looking at the capture file, I see that the connections are not >>> checked every 30 seconds as I expected. One connection is checked >>> correctly, the others are checked after 3 times the configuration (180 >>> second). then again only some of the connections are checked and after a >>> while it seems to stable on twice the configuration period (every 60 >>> seconds). >>> >>> I tested it with different configured time and different pool size, all had >>> a instability period in which each time only part of the connections were >>> checked and eventually it stabled on checks of all the connections every >>> twice the configured time. >>> What am I missing? >>> Thanks, >> Most likely the connections not being tested are checked out to clients when >> the pool maintenance runs. Assuming you are using the default DBCP pool, >> >only idle connections (meaning waiting in the pool) are tested by the >> maintenance thread. >> Phil > No, all connection are idle, but still looking at wireShark the validation > query is sent every twice the TimeBetweenEvictionRunsMillis.
I am sorry I should have been more clear. The term, "idle" is a little confusing here. I should have said connections are only checked when they are not checked out to client threads. A connection can be "idle" from the DB standpoint but still checked out to a client. A connection that is checked out to a client will not be tested by the pool maintenance thread. Are there clients using the pool while you are running this test? I notice now a parameter not supported by DBCP, so I guess you must be using the tomcat-jdbc pool. It looks to me like it defines "idle" the same way DBCP does - in other words above statements are true for that pool too. It is also possible that setting validationInterval to a value <= timeBetweenEvictionRuns may cause some validations to be suppressed, since the former is a max frequency. Phil > > > Nir > >> Nir > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org