tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Romain Manni-Bucau <rmannibu...@gmail.com>
Subject Re: Get JDBC pool capacity
Date Fri, 28 Oct 2016 21:13:40 GMT
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
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message