Jason,

Look at the current thread with user nathanwray. He saw behavior that
sounded the same as what you're seeing, which he found was caused by the
ActiveMQ code failing to detect that his JDBC driver was an Oracle driver.
He was able to work around the problem by explicitly setting the database
type in his activemq.xml file. Can you test the same workaround and let us
know if it works for you?

Thanks,
Tim

On Jan 31, 2018 12:15 AM, "jasons" <jason.sm...@au.abb.com> wrote:

> Hi, I have a customer running AMQ 5.10.0, JDBC persistence and no
> journalling
> like the OP.  We saw the same query as the OP last week......also during a
> restart of the JBoss app server running AMQ embedded.   Oracle AWR reports
> showed this SQL was executed 14,000 times in 1 hour, effectively grinding
> the DB to a stall....unfortunately also impacting other apps on the same
> instance.   The broker ultimately then failed to the first instance owing
> to
> the time to start exceeding the JBoss deployment timeout limit (which we
> had
> to subsequently increase).
>
> Has anyone offered any good suggestions to your dilema?  Our customer's
> ACTIVEMQ_MSGS table cardinality matching the "WHERE CONTAINER =" predicate
> was at 300,000 records so its little wonder the query performs like a dog
> on
> each execution.  jstacks captured during one of the lengthy startup
> attempts
> looked like this:
> "Broker Starting Thread" prio=10 tid=0x00007fdd38a1b000 nid=0x3bd6 runnable
> [0x00007fdd70e65000]
>    java.lang.Thread.State: RUNNABLE
>         at java.net.SocketInputStream.socketRead0(Native Method)
>         at java.net.SocketInputStream.read(SocketInputStream.java:152)
>         at java.net.SocketInputStream.read(SocketInputStream.java:122)
>         at oracle.net.ns.Packet.receive(Packet.java:300)
>         at oracle.net.ns.DataPacket.receive(DataPacket.java:106)
>         at
> oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:315)
>         at oracle.net.ns.NetInputStream.read(NetInputStream.java:260)
>         at oracle.net.ns.NetInputStream.read(NetInputStream.java:185)
>         at oracle.net.ns.NetInputStream.read(NetInputStream.java:102)
>         at
> oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(
> T4CSocketInputStreamWrapper.java:124)
>         at
> oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(
> T4CSocketInputStreamWrapper.java:80)
>         at
> oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1137)
>         at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:290)
>         at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192)
>         at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)
>         at
> oracle.jdbc.driver.T4CPreparedStatement.doOall8(
> T4CPreparedStatement.java:207)
>         at
> oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(
> T4CPreparedStatement.java:884)
>         at
> oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(
> OracleStatement.java:1167)
>         at
> oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(
> OracleStatement.java:1289)
>         at
> oracle.jdbc.driver.OraclePreparedStatement.executeInternal(
> OraclePreparedStatement.java:3584)
>         at
> oracle.jdbc.driver.OraclePreparedStatement.executeQuery(
> OraclePreparedStatement.java:3628)
>         - locked <0x0000000666a73b80> (a oracle.jdbc.driver.T4CConnection)
>         at
> oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(
> OraclePreparedStatementWrapper.java:1493)
>         at
> org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.executeQuery(
> WrappedPreparedStatement.java:462)
>         at
> org.apache.activemq.store.jdbc.adapter.DefaultJDBCAdapter.
> doGetDurableSubscriberMessageCount(DefaultJDBCAdapter.java:681)
>         at
> org.apache.activemq.store.jdbc.JDBCTopicMessageStore.getMessageCount(
> JDBCTopicMessageStore.java:392)
>         at
> org.apache.activemq.store.ProxyTopicMessageStore.getMessageCount(
> ProxyTopicMessageStore.java:140)
>         at
> org.apache.activemq.broker.region.cursors.TopicStorePrefetch.getStoreSize(
> TopicStorePrefetch.java:88)
>         - locked <0x0000000652a9bc60> (a
> org.apache.activemq.broker.region.cursors.TopicStorePrefetch)
>         at
> org.apache.activemq.broker.region.cursors.AbstractStoreCursor.resetSize(
> AbstractStoreCursor.java:68)
>         at
> org.apache.activemq.broker.region.cursors.TopicStorePrefetch.<init>(
> TopicStorePrefetch.java:56)
>         at
> org.apache.activemq.broker.region.cursors.StoreDurableSubscriberCursor.
> add(StoreDurableSubscriberCursor.java:119)
>         - locked <0x0000000652a66f38> (a
> org.apache.activemq.broker.region.cursors.StoreDurableSubscriberCursor)
>         at
> org.apache.activemq.broker.region.PrefetchSubscription.
> add(PrefetchSubscription.java:589)
>         - locked <0x0000000652a5ef98> (a java.lang.Object)
>         at
> org.apache.activemq.broker.region.DurableTopicSubscription.add(
> DurableTopicSubscription.java:111)
>         at
> org.apache.activemq.broker.region.Topic.addSubscription(Topic.java:160)
>         at
> org.apache.activemq.broker.region.TopicRegion.
> addSubscriptionsForDestination(TopicRegion.java:256)
>         at
> org.apache.activemq.broker.region.AbstractRegion.
> addDestination(AbstractRegion.java:144)
>         at
> org.apache.activemq.broker.region.RegionBroker.
> addDestination(RegionBroker.java:325)
>         at
> org.apache.activemq.broker.BrokerFilter.addDestination(
> BrokerFilter.java:167)
>         at
> org.apache.activemq.broker.BrokerFilter.addDestination(
> BrokerFilter.java:167)
>         at
> org.apache.activemq.advisory.AdvisoryBroker.addDestination(
> AdvisoryBroker.java:184)
>         at
> org.apache.activemq.broker.BrokerFilter.addDestination(
> BrokerFilter.java:167)
>         at
> org.apache.activemq.broker.BrokerFilter.addDestination(
> BrokerFilter.java:167)
>
> The process seems to be simply fill buffers , possibly for in-memory
> stores,
> but why so so inefficient?
>
>
>
>
> --
> Sent from: http://activemq.2283324.n4.nabble.com/ActiveMQ-User-
> f2341805.html
>

Reply via email to