On Fri, Jan 21, 2011 at 12:46 PM, Sumedha Rubasinghe <[email protected]>wrote:
> > > On Fri, Jan 21, 2011 at 12:40 PM, Anjana Fernando <[email protected]> wrote: > >> Hi, >> >> I noticed that most of the time, we are using the validation query in >> an inefficient way. The current logic that is in Registry/UM is the >> "testOnBorrow" approach. Here, each time a connection is acquired from >> the connection pool, the validation query is run to validate it. So >> most of the places, we just execute a single query at a time, so >> effectively for each query, the validation query will be executed as >> well, so this will result in 2x query execution with validation query >> on. >> >> So, most of the time, we will not need this, the main reason we use >> this is, to recover from stale connections. We've two alternatives for >> this, >> >> 1. Use the mode "testWhileIdle" with the validation query, also >> setting "timeBetweenEvictionRunsMillis" to specify the interval where >> an 'evictor' thread it run. Here when the evictor thread is run, it >> executes the validation query for all the connections and check if >> they are active, if not, they are dropped from the pool. >> >> 2. No validation query is used, "minEvictableIdleTimeMillis" is >> specified with "timeBetweenEvictionRunsMillis". This effectively >> signals DBCP, for all the connections that are idle for >> "minEvictableIdleTimeMillis" time period, the evictor thread will >> identify them and drop them. Note that, this will not use a validation >> query. >> >> So the perfect option would be to use the second option. Where it will >> not at least use the validation query, where you can simply put a >> "minEvictableIdleTimeMillis" value which is a bit less than the >> connection time-out for a specific DBMS. For example, if MySQL >> connection time-out is 8hrs, we can safely put 4 or 6 hrs as the >> "minEvictableIdleTimeMillis" value. >> >> The only upside when using "testOnBorrow" is, for a situation like, if >> the database is resetted for some reason or some unexpected >> communication problem occurs, then all the connections in the >> connection pool becomes invalid, and then when a connection is >> acquired from the pool, it will immediately run the validation query >> and renew the connections. >> >> This functionality is already there in the data sources component to >> provide the configuration, and this also will be there in the next DSS >> release. It will be better if this is also added to Registry/UM. For >> more info, refer to [1]. >> > > Anjana, > We will be using data sources component for UM & Registry database > connections. I guess problems you have mentioned will be solved by that. > +1. Let's get this done, so that we can finish up the MT data storage and tenant partitioning work pending for Stratos. Thanks, Senaka. > /sumedha > > >> >> [1] http://commons.apache.org/dbcp/configuration.html >> >> Cheers, >> Anjana. >> >> -- >> Anjana Fernando >> Software Engineer >> WSO2, Inc.; http://wso2.com >> lean.enterprise.middleware >> _______________________________________________ >> Carbon-dev mailing list >> [email protected] >> https://wso2.org/cgi-bin/mailman/listinfo/carbon-dev >> > > > _______________________________________________ > Carbon-dev mailing list > [email protected] > https://wso2.org/cgi-bin/mailman/listinfo/carbon-dev > > -- *Senaka Fernando* Product Manager - WSO2 Governance Registry; Associate Technical Lead; WSO2, Inc.; http://wso2.com* Member; Apache Software Foundation; http://apache.org E-mail: senaka AT wso2.com **P: +1 408 754 7388; ext: 51736*; *M: +94 77 322 1818 Linked-In: http://www.linkedin.com/in/senakafernando *Lean . Enterprise . Middleware
_______________________________________________ Carbon-dev mailing list [email protected] https://wso2.org/cgi-bin/mailman/listinfo/carbon-dev
