Announcement Announcement Module
Collapse
No announcement yet.
Websphere Connection Manager received a fatal connection after MaxConsumers > 10 Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • Websphere Connection Manager received a fatal connection after MaxConsumers > 10

    I have an application sitting on a queue and processing messages that are generally under heavy load, on average about 20 transactions a second.

    I am using Websphere MQ, and if I set the minimumConsumers to 5 and the Maximum to 10, I never see any exceptions in the logs. However, as soon as I set the Maximum greater than 10, and the load causes more than 10 consumers to be registered, I start seeing these exceptions:

    Code:
    ConnectionEve A J2CA0056I: The Connection Manager received a fatal connection error from the Resource Adapter for resource JMS$iracMQ01$JMSManagedConnection@860631884. The exception which was received is javax.jms.IllegalStateException: MQJMS3033: QueueReceiver is closed
    Code:
    MCWrapper E J2CA0081E: Method cleanup failed while trying to execute method cleanup on ManagedConnection from resource jms/connFactory/MQ1. Caught exception: javax.resource.spi.ResourceAdapterInternalException: Failed to stop connection on cleanup
          at com.ibm.ejs.jms.JMSCMUtils.mapToResourceException(JMSCMUtils.java:176)
          at com.ibm.ejs.jms.JMSManagedConnection.cleanup(JMSManagedConnection.java:955)
          at com.ibm.ejs.j2c.MCWrapper.cleanup(MCWrapper.java:1421)
          at com.ibm.ejs.j2c.FreePool.cleanupAndDestroyMCWrapper(FreePool.java:691)
          at com.ibm.ejs.j2c.FreePool.returnToFreePool(FreePool.java:469)
          at com.ibm.ejs.j2c.PoolManager.release(PoolManager.java:1655)
          at com.ibm.ejs.j2c.MCWrapper.releaseToPoolManager(MCWrapper.java:2251)
          at com.ibm.ejs.j2c.MCWrapper.connectionErrorOccurred(MCWrapper.java:2362)
          at com.ibm.ejs.j2c.ConnectionEventListener.connectionErrorOccurred(ConnectionEventListener.java:411)
          at com.ibm.ejs.jms.JMSManagedConnection.connectionErrorOccurred(JMSManagedConnection.java:1339)
          at com.ibm.ejs.jms.JMSConnectionHandle.markManagedConnectionAsStale(JMSConnectionHandle.java:876)
          at com.ibm.ejs.jms.JMSSessionHandle.markManagedObjectsAsStale(JMSSessionHandle.java:1440)
          at com.ibm.ejs.jms.JMSMessageConsumerHandle.markManagedObjectsAsStale(JMSMessageConsumerHandle.java:885)
          at com.ibm.ejs.jms.JMSMessageConsumerHandle.receive(JMSMessageConsumerHandle.java:540)
          at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveMessage(AbstractPollingMessageListenerContainer.java:375)
          at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:300)
          at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:254)
          at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:870)
          at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:810)
          at java.lang.Thread.run(Thread.java:799)
    Caused by: javax.jms.IllegalStateException: MQJMS1004: connection closed
          at com.ibm.mq.jms.MQConnection.checkConnectionOpen(MQConnection.java:2336)
          at com.ibm.mq.jms.MQConnection.getExceptionListener(MQConnection.java:1295)
          at com.ibm.ejs.jms.JMSManagedConnection.cleanup(JMSManagedConnection.java:933)
          ... 18 more
    Code:
    MCWrapper E J2CA0079E: Method transactionComplete has detected an internal illegal state and is throwing an IllegalStateException. The exception is: java.lang.IllegalStateException: transactionComplete: illegal state exception. State = STATE_ACTIVE_INUSE
          at com.ibm.ejs.j2c.MCWrapper.transactionComplete(MCWrapper.java:1294)
          at com.ibm.ejs.j2c.ConnectionEventListener.connectionClosed(ConnectionEventListener.java:269)
          at com.ibm.ejs.jms.JMSManagedConnection.handleClosed(JMSManagedConnection.java:1598)
          at com.ibm.ejs.jms.JMSConnectionHandle.close(JMSConnectionHandle.java:564)
          at org.springframework.jms.connection.ConnectionFactoryUtils.releaseConnection(ConnectionFactoryUtils.java:80)
          at org.springframework.jms.listener.AbstractJmsListeningContainer.refreshSharedConnection(AbstractJmsListeningContainer.java:196)
          at org.springframework.jms.listener.DefaultMessageListenerContainer.refreshConnectionUntilSuccessful(DefaultMessageListenerContainer.java:700)
          at org.springframework.jms.listener.DefaultMessageListenerContainer.recoverAfterListenerSetupFailure(DefaultMessageListenerContainer.java:682)
          at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:834)
          at java.lang.Thread.run(Thread.java:799)
    I have checked in the websphere admin console the settings of the ConnectionFactory, and I've confirmed that the connection pool has a maximum size of 50 connections, and a minimum of 1. I have even raised it higher, but no matter what I do it seems that if I ever go over 10 maximum concurrent consumers, I have these problems. While the app generally still works, the exceptions do in fact interfere with certain messages. Has anyone any insight on this?

  • #2
    We had the same issue, and the Listener was throwing exceptions every few minutes. Load on the service was at 5TPS, and the exceptions progressively got worse as the load was increased. The maxConcurrentConsumers was set to 20.
    Resolved the issue by increasing both Connection Factory Pool and Session Pool.

    Comment

    Working...
    X