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 Mon, 31 Oct 2016 18:33:17 GMT
if you can share a project i can run with "mvn package tomee:run" I can
sort it out for you if it helps


Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<https://blog-rmannibucau.rhcloud.com> | Old Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory
<https://javaeefactory-rmannibucau.rhcloud.com>

2016-10-31 18:27 GMT+01:00 Zachary Bedell <zbedell@nycourts.gov>:

> I tried some variations just to get an idea of what's actually the magic
> thing that's making my config (not) work.
>
> 1)
> resource.xml:
>         DataSourceCreator dbcp
>         # JmxEnabled absent -- default value
>
> system.properties:
>         No setting for datasource-creator
>
> RESULT: Works.  Attributes visible in JMX under "openejb.management:
> DataSource=UCMSSecurity/ucsSecurityKeystore,ObjectType=datasources"
>
>
> 2)
> resource.xml:
>         # DataSourceCreator absent -- default value
>         JmxEnabled true
>
> system.properties:
>         No setting for datasource-creator
>
> RESULT: Fails.  Nothing in JMX for the datasources.
>
>
> 3)
> resource.xml:
>         # DataSourceCreator absent -- default value
>         # JmxEnabled -- default value
>
> system.properties:
>         openejb.jdbc.datasource-creator = *anything*
>
> RESULT: Fails.
>
> I tried dbcp, org.apache.tomee.jdbc.TomEEDataSourceCreator, tomcat-dbcp,
> as well as complete gibberish for the setting in system.properties.  In all
> cases, the log message came out as:
>
> 13:07:18,631 INFO  [options] Using 'openejb.jdbc.datasource-
> creator=org.apache.tomee.jdbc.TomEEDataSourceCreator'
>
> (I'm using log4j, thus different formatting on the logs.)
>
> The string "datasource-creator" doesn't appear anywhere in my distribution
> other than system.properties and the log files, so I don't see how anything
> else could be setting that value.  The setting in system.properties appears
> to be ignored.
>
>
> I can run with case #1 now, explicitly setting the datasource creator in
> each datasource.  I'm getting the stats I need that way.  If there's any
> other info I can provide to figure out why the setting is being ignored,
> let me know.
>
> Thanks again for the help!
>
> -Zac
>
>
>
> > On Oct 28, 2016, at 17:08, Romain Manni-Bucau <rmannibucau@gmail.com>
> wrote:
> >
> > still openejb.jdbc.datasource-creator and it should even be logged
> during
> > startup:
> >
> > Feb 07, 2014 10:40:05 PM org.apache.openejb.util.OptionsLog info
> > INFO: Using 'openejb.jdbc.datasource-creator=org.apache.tomee.jdbc.
> TomEEDataSourceCreator'
> >
> > you can give a try to add jmxEnabled=true to your datasource properties
> but
> > should be the default
> >
> >
> >
> > Romain Manni-Bucau
> > @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> > <https://blog-rmannibucau.rhcloud.com> | Old Blog
> > <http://rmannibucau.wordpress.com> | Github <https://github.com/
> rmannibucau> |
> > LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory
> > <https://javaeefactory-rmannibucau.rhcloud.com>
> >
> > 2016-10-28 23:04 GMT+02:00 Zachary Bedell <zbedell@nycourts.gov>:
> >
> >> 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