tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gurkan Erdogdu <gerdo...@managecat.com>
Subject Re: Get JDBC pool capacity
Date Fri, 28 Oct 2016 21:52:10 GMT
> This is not true...depends 1. the usage, 2. the type of datasource
> 
> Also note we don't use dbcp but dbcp2 which got updated compared to dbcp 1on several
aspect 
I mean dbcp2 and it is a some bit preference to use dbcp2 or tomcat jdbc. But from our experience
tomcat-jdbc is much faster and easy to work/debug
Could you give some example scenario of using dbcp2 against tomcat jdbc?

Gurkan-

> On 29 Oct 2016, at 00:13, Romain Manni-Bucau <rmannibucau@gmail.com> wrote:
> 
> 2016-10-28 23:10 GMT+02:00 Gurkan Erdogdu <gerdogdu@managecat.com>:
> 
>> Hi
>> 
>> DBCP is not a good option against default one Tomcat JDBC Pool. I suggest
>> to stick with Tomcat JDBC Pool implementation against Common DBCP you set.
>> You can read more about Tomcat JDBC Pool in here,
>> http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html <
>> http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html>
>> 
> 
> This is not true...depends 1. the usage, 2. the type of datasource
> 
> Also note we don't use dbcp but dbcp2 which got updated compared to dbcp 1
> on several aspects.
> 
> 
>> 
>> Best
>> Gurkan
>> http://managecat.com <http://managecat.com/>
>> 
>>> On 29 Oct 2016, at 00:04, Zachary Bedell <zbedell@nycourts.gov> wrote:
>>> 
>>> As far as I know, I didn't do anything to change the pooling
>> implementation.
>>> 
>>> It does all start working if I add an explicit "DataSourceCreator dbcp"
>> to my datasource definitions in resource.xml.  With that, the datasources
>> section shows up in JMX, and I see all the stats I need.
>>> 
>>> I found a suggestion on this page (https://rmannibucau.
>> wordpress.com/2012/08/10/switching-of-datasource-connection-pooling-in-
>> tomeeopenejb/) that adding "openejb.jdbc.datasource-creator = dbcp" to
>> system.properties should do the same globally, but that didn't work for
>> me.  Adding that & removing the DataSourceCreator entry went back to no
>> stats.  Maybe there's any updated name for that property?
>>> 
>>> Not sure what about my config breaks the default configuration, but this
>> looks like it should do the trick for now.
>>> 
>>> Thanks for the pointers!
>>> 
>>> -Zac
>>> 
>>> 
>>> On Oct 28, 2016, at 16:14, Romain Manni-Bucau <rmannibucau@gmail.com
>> <mailto:rmannibucau@gmail.com>> wrote:
>>> 
>>> weird, try to reproduce your setup on github I'll check next week
>>> 
>>> only case I'm thiking about is you don't use dbcp or tomcat-jdbc pooling
>>> 
>>> 
>>> Romain Manni-Bucau
>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>> <https://blog-rmannibucau.rhcloud.com<https://blog-
>> rmannibucau.rhcloud.com/>> | Old Blog
>>> <http://rmannibucau.wordpress.com<http://rmannibucau.wordpress.com/>>
|
>> Github <https://github.com/rmannibucau> |
>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory
>>> <https://javaeefactory-rmannibucau.rhcloud.com<https:
>> //javaeefactory-rmannibucau.rhcloud.com/>>
>>> 
>>> 2016-10-28 22:12 GMT+02:00 Zachary Bedell <zbedell@nycourts.gov<mailto:z
>> bedell@nycourts.gov>>:
>>> 
>>> That doesn't exist for me at all in jconsole.
>>> 
>>> Screenshot: http://imgur.com/a/5mMgz
>>> 
>>> If I enumerate JMX using an ObjectName of "openejb.management:*" with
>>> something like the code below, there's no "datasources" in any of the
>> found
>>> objects.  Nothing matching the names of my pools either.
>>> 
>>> final ObjectName name = new ObjectName("openejb.management:*");
>>> final Set<ObjectInstance> search = mbeanServer.queryMBeans(name, null);
>>> for(final ObjectInstance objectInstance : search) {
>>> System.out.println(objectInstance.getObjectName().getCanonicalName());
>>> }
>>> 
>>> -Zac
>>> 
>>> On Oct 28, 2016, at 15:55, Romain Manni-Bucau <rmannibucau@gmail.com
>> <mailto:rmannibucau@gmail.com>
>>> <mailto:rmannibucau@gmail.com>> wrote:
>>> 
>>> openejb.management > datasources
>>> 
>>> 
>>> 
>>> Romain Manni-Bucau
>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>> <https://blog-rmannibucau.rhcloud.com<https://blog-
>> rmannibucau.rhcloud.com/>> | Old Blog
>>> <http://rmannibucau.wordpress.com<http://rmannibucau.wordpress.com/>>
|
>> Github <https://github.com/
>>> rmannibucau> |
>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory
>>> <https://javaeefactory-rmannibucau.rhcloud.com<https:
>> //javaeefactory-rmannibucau.rhcloud.com/>>
>>> 
>>> 2016-10-28 21:41 GMT+02:00 Zachary Bedell <zbedell@nycourts.gov<mailto:z
>> bedell@nycourts.gov><mailto:z
>>> bedell@nycourts.gov<mailto:bedell@nycourts.gov>>>:
>>> 
>>> Would the stats show up in a different part of the tree?  I don't see the
>>> datasources entry at all under openejb.management.
>>> 
>>> I can find DataSourceFactory objects under:
>>> 
>>> Catalina:class=org.apache.openejb.resource.jdbc.DataSourceFactory,name="
>>> EARNAME/POOLNAME",resourcetype=Global,type=Resource
>>> 
>>> 
>>> The DataSource's themselves show up in every WAR they're injected into:
>>> 
>>> Catalina:type=DataSource,host=localhost,context=/WARNAME,
>>> class=javax.sql.DataSource,name="openejb/Resource/POOLNAME"
>>> 
>>> 
>>> Neither the DataSource nor DataSourceFactory expose anything that looks
>>> like active or max connections.
>>> 
>>> We're trying pretty hard to keep everything related to the app in its own
>>> EAR rather than globally in tomee.xml.  So far the only thing we have in
>>> tomee.xml is a <Deployments dir="X"/> entry where we're dropping the
>> EAR's.
>>> 
>>> -Zac
>>> 
>>> On Oct 28, 2016, at 15:28, Romain Manni-Bucau <rmannibucau@gmail.com
>> <mailto:rmannibucau@gmail.com>
>>> <mailto:rmannibucau@gmail.com>>
>>> wrote:
>>> 
>>> they are, name is just prefixed with app name
>>> 
>>> 
>>> Romain Manni-Bucau
>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>> <https://blog-rmannibucau.rhcloud.com<https://blog-
>> rmannibucau.rhcloud.com/>> | Old Blog
>>> <http://rmannibucau.wordpress.com<http://rmannibucau.wordpress.com/>>
|
>> Github <https://github.com/
>>> rmannibucau> |
>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory
>>> <https://javaeefactory-rmannibucau.rhcloud.com<https:
>> //javaeefactory-rmannibucau.rhcloud.com/>>
>>> 
>>> 2016-10-28 21:14 GMT+02:00 Adam Cornett <adam.cornett@gmail.com<mailto:
>> adam.cornett@gmail.com><mailto:
>>> adam.cornett@gmail.com<mailto:adam.cornett@gmail.com>>>:
>>> 
>>> Perhaps, my datasources are defined at the container level
>>> (conf/tomee.xml). Perhaps the app level data sources are not registered
>>> in
>>> JMX.
>>> Romain or another dev would need to speak to that.
>>> 
>>> On Fri, Oct 28, 2016 at 2:29 PM, Zachary Bedell <zbedell@nycourts.gov
>> <mailto:zbedell@nycourts.gov>
>>> <mailto:zbedell@nycourts.gov>>
>>> wrote:
>>> 
>>> Yes to TomEE 7.0.1, but I don't see a datasources entry under
>>> openejb.management in jconsole.  I've got Invocations, JAX-RS, JAX-WS,
>>> Pool, TransactionManager, and containers.
>>> 
>>> Guessing maybe the way I define the datasources may be relevant?
>>> They're
>>> in a resources.xml file inside an EAR.  Defined like:
>>> 
>>> <Resource id="ucmsTXPool" type="DataSource">
>>> JdbcDriver oracle.jdbc.xa.client.OracleXADataSource
>>> JdbcUrl ${ucmsTXPool.JdbcUrl}
>>> User ${ucmsTXPool.User}
>>> UserName ${ucmsTXPool.User}
>>> VaultPassword ${ucmsTXPool.Password}
>>> InitialSize ${ucmsTXPool.InitialSize}
>>> MaxActive ${ucmsTXPool.MaxActive}
>>> MaxIdle 10
>>> MaxWait 15000
>>> ValidationQuery "SELECT sysdate FROM DUAL"
>>> TestOnBorrow true
>>> TestOnReturn true
>>> TestWhileIdle true
>>> TimeBetweenEvictionRunsMillis 60000
>>> AccessToUnderlyingConnectionAllowed true
>>> JtaManaged true
>>> </Resource>
>>> 
>>> The ${...} are loaded from a config repository via a Listener in
>>> server.xml.  The VaultPassword is handled via custom PasswordCipher
>>> registered via META-INF/org.apache.openejb.cipher.PasswordCipher in a
>>> jar
>>> in server/lib.
>>> 
>>> -Zac
>>> 
>>> On Oct 28, 2016, at 14:09, Adam Cornett <adam.cornett@gmail.com<mailto:
>> adam.cornett@gmail.com><mailto:
>>> adam.cornett@gmail.com<mailto:adam.cornett@gmail.com>>>
>>> wrote:
>>> 
>>> Sure:
>>> openejb.management/datasources/[DSNAME] should have attributes such
>>> as:
>>> Size, Idle, WaitCount, etc.
>>> 
>>> There should be an object for each datasource defined in your
>>> tomee.xml
>>> file.  I'm assuming you're on TomEE 7?
>>> 
>>> On Fri, Oct 28, 2016 at 2:03 PM, Zachary Bedell <zbedell@nycourts.gov
>> <mailto:zbedell@nycourts.gov>
>>> <mailto:zbedell@nycourts.gov>
>>> 
>>> wrote:
>>> 
>>> Adam, your image didn't come through the list, at least for me.  Can
>>> you
>>> give me a textual path to where you're looking?
>>> 
>>> 
>>> The only thing listed as openejb under mbeans is
>>> "openejb.management."
>>> There's nothing under there that matches the names of any of my
>>> pools.
>>> The
>>> only matches for "datasource" I see are the containers for the
>>> stateless,
>>> stateful, singleton, and managed beans.  The only pool related stuff
>>> I
>>> see
>>> under there is for the EJB instances.
>>> 
>>> I see an "Active" attribute under the TransactionManager, but that's
>>> not
>>> per-pool, and I'm not sure that it represents all of the JDBC
>>> connections
>>> as opposed to an EJB container transaction.  We'd have EJB's that are
>>> set
>>> @TransactionAttribute(NOT_SUPPORTED) as well as single transactions
>>> that
>>> touch several connection pools (XA), so active transactions from the
>>> container's point of view isn't granular enough to know if one of the
>>> pools
>>> is running low.
>>> 
>>> -Zac
>>> 
>>> 
>>> 
>>> 
>>> On Oct 28, 2016, at 13:30, Adam Cornett <adam.cornett@gmail.com<mailto:
>> adam.cornett@gmail.com><mailto:
>>> adam.cornett@gmail.com<mailto:adam.cornett@gmail.com>><
>>> mailto:
>>> adam.cornett@gmail.com<mailto:adam.cornett@gmail.com><mailto:
>> adam.cornett@gmail.com>>> wrote:
>>> 
>>> Here is a screenshot out of jconsole showing the location and
>>> attributes:
>>> 
>>> 
>>> On Fri, Oct 28, 2016 at 1:21 PM, Romain Manni-Bucau <
>>> rmannibucau@gmail.com<mailto:rmannibucau@gmail.com><mailto:r
>> mannibucau@gmail.com>
>>> <mailto:rmannibucau@gmail.com>> wrote:
>>> Hi Zachary,
>>> 
>>> 2016-10-28 19:18 GMT+02:00 Zachary Bedell <zbedell@nycourts.gov<mailto:z
>> bedell@nycourts.gov>
>>> <mailto:
>>> z
>>> bedell@nycourts.gov<mailto:bedell@nycourts.gov><mailto:bedel
>> l@nycourts.gov>>>:
>>> 
>>> Good afternoon,
>>> 
>>> I'm working on a monitoring agent for TomEE to plugin to an in-house
>>> package we use.  One of the most common failures in our current app
>>> server
>>> (JBoss) usually manifests as expended JDBC connection pools, so we
>>> alert
>>> as
>>> pools approach full to get some kind of warning of impending doom
>>> when
>>> the
>>> database can't keep up.
>>> 
>>> I need to get a handle on TomEE's datasource pools to check their
>>> maximum
>>> size & current active connection count programatically.  I've tried
>>> searching through both JMX (how we do it in JBoss) and the JNDI
>>> tree.
>>> I
>>> can find the javax.sql.DataSource in both trees as well as a
>>> reference
>>> to
>>> org.apache.openejb.resource.jdbc.DataSourceFactory in JMX.  It
>>> doesn't
>>> appear any of the objects I've been able to find expose a count of
>>> active
>>> connections nor what the configured maximum is.
>>> 
>>> 
>>> in openejb MBeans it should be there
>>> 
>>> 
>>> Is there a way to get the count of active connections & the
>>> configured
>>> max
>>> for a named connection pool (I can find the names via JMX or JNDI)
>>> or
>>> for
>>> all connection pools?
>>> 
>>> 
>>> 
>>> Thanks in advance,
>>> Zac Bedell
>>> 
>>> 
>>> 
>>> 
>>> 
>>> --
>>> Adam Cornett
>>> adam.cornett@gmail.com<mailto:adam.cornett@gmail.com><mailto:
>> adam.cornett@gmail.com><mailto:
>>> adam.cornett@gmail.com<mailto:adam.cornett@gmail.com>>
>>> (678) 296-1150
>>> 
>>> 
>>> 
>>> 
>>> --
>>> Adam Cornett
>>> adam.cornett@gmail.com<mailto:adam.cornett@gmail.com><mailto:
>> adam.cornett@gmail.com>
>>> (678) 296-1150
>>> 
>>> 
>>> 
>>> 
>>> --
>>> Adam Cornett
>>> adam.cornett@gmail.com<mailto:adam.cornett@gmail.com><mailto:
>> adam.cornett@gmail.com>
>>> (678) 296-1150
>>> 




Mime
View raw message