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

Reply via email to