Websphere WTRN0124I:线程发生超时时

Websphere WTRN0124I:线程发生超时时,websphere,ibm-mq,websphere-7,websphere-6.1,Websphere,Ibm Mq,Websphere 7,Websphere 6.1,我得到下面的错误。请帮助 [8/8/14 21:14:56:939 GMT-08:00]0000000 5超时管理I WTRN0006W:事务00000147B92EFAE20000010000012DF462C9E681BA3670A44A25FE1B0F6182303FB5C0000147B92EFAE20000010000012DF462C9E681BA3670A44A25FE1B0F6182303FB5C000000001在120秒后超时。 [8/8/14 21:14:56:967 GM

我得到下面的错误。请帮助

[8/8/14 21:14:56:939 GMT-08:00]0000000 5超时管理I WTRN0006W:事务00000147B92EFAE20000010000012DF462C9E681BA3670A44A25FE1B0F6182303FB5C0000147B92EFAE20000010000012DF462C9E681BA3670A44A25FE1B0F6182303FB5C000000001在120秒后超时。

[8/8/14 21:14:56:967 GMT-08:00]0000000 6 TimeoutManage I WTRN0124I:超时发生时,与事务关联或最近关联的线程是线程[WMQJCAResourceAdapter:4,5,main]。发生超时时此线程的堆栈跟踪为:

java.net.SocketOutputStream.socketWrite0(Native Method)
java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:103)
java.net.SocketOutputStream.write(SocketOutputStream.java:147)
com.ibm.mq.jmqi.remote.internal.RemoteTCPConnection.send(RemoteTCPConnection.java:1212)
com.ibm.mq.jmqi.remote.internal.system.RemoteConnection.sendTSH(RemoteConnection.java:2289)
com.ibm.mq.jmqi.remote.internal.RemoteHconn.sendTSH(RemoteHconn.java:954)
com.ibm.mq.jmqi.remote.internal.RemoteFAP.jmqiPut(RemoteFAP.java:5443)
com.ibm.mq.jmqi.remote.internal.RemoteFAP.MQPUT(RemoteFAP.java:5205)
com.ibm.msg.client.wmq.v6.base.internal.MQSESSION.MQPUT(MQSESSION.java:1252)
com.ibm.msg.client.wmq.v6.base.internal.MQQueue.putMsg2(MQQueue.java:2090)
com.ibm.msg.client.wmq.v6.jms.internal.MQMessageProducer.sendInternal(MQMessageProducer.java:1262)
com.ibm.msg.client.wmq.v6.jms.internal.MQMessageProducer.send(MQMessageProducer.java:768)
com.ibm.msg.client.wmq.v6.jms.internal.MQMessageProducer.send(MQMessageProducer.java:2713)
com.ibm.msg.client.jms.internal.JmsMessageProducerImpl.sendMessage(JmsMessageProducerImpl.java:872)
com.ibm.msg.client.jms.internal.JmsMessageProducerImpl.send_(JmsMessageProducerImpl.java:727)
com.ibm.msg.client.jms.internal.JmsMessageProducerImpl.send(JmsMessageProducerImpl.java:398)
com.ibm.mq.jms.MQMessageProducer.send(MQMessageProducer.java:281)
com.ibm.ejs.jms.JMSQueueSenderHandle.send(JMSQueueSenderHandle.java:204)
com.scb.sts.stsappserver.sender.MessageSender.sendRecords(Unknown Source)
com.scb.sts.services.PCSPPaymentSplitter.doExecute(Unknown Source)
com.scb.sts.stsappserver.eventhandler.SplitterEventHandler.handleEvent(Unknown Source)
com.scb.sts.services.PCSPPaymentReceiver.doProcess(Unknown Source)
com.scb.sts.services.PCSPPaymentReceiver.doExecute(Unknown Source)
com.scb.sts.controllers.OCWSServlet.doPost(Unknown Source)
com.scb.sts.qlcomm.QLCommBean.processXMLFile(Unknown Source)
com.scb.sts.qlcomm.QLCommBean.isDoOutput(Unknown Source)
com.scb.sts.qlcomm.QLCommBean.onMessage(Unknown Source)
com.ibm.ejs.container.MessageEndpointHandler.invokeMdbMethod(MessageEndpointHandler.java:1093)
com.ibm.ejs.container.MessageEndpointHandler.invoke(MessageEndpointHandler.java:778)
$Proxy32.onMessage(Unknown Source)
com.ibm.mq.connector.inbound.MessageEndpointWrapper.onMessage(MessageEndpointWrapper.java:131)
com.ibm.mq.jms.MQSession$FacadeMessageListener.onMessage(MQSession.java:147)
com.ibm.msg.client.jms.internal.JmsSessionImpl.run(JmsSessionImpl.java:2557)
com.ibm.mq.jms.MQSession.run(MQSession.java:860)
com.ibm.mq.connector.inbound.WorkImpl.run(WorkImpl.java:172)
com.ibm.ejs.j2c.work.WorkProxy.run(WorkProxy.java:399)
com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1604)

事务超时仅仅意味着在超时过期之前没有提交事务,在这种情况下,120秒后没有提交

堆栈显示您在名为QLCommBean的MDB的onMessage()函数中。并且该MDB通过MessageSender.sendRecords()发送一些消息,而MessageSender.sendRecords()又被称为MQ JMS API:

JMSQueueSenderHandle.send()

堆栈的顶部是:

java.net.SocketOutputStream.socketWrite0(本机方法)

这意味着在事务超时时MDB中的活动代码是套接字写入(通过网络发送数据)。在本例中,MQ正在向队列管理器发送消息

事务超时本身不是错误。您需要查看MDB逻辑,并确定120秒是否是进入MDB的适当时间。如果不是,我建议您将日志添加到MDB中,以了解它在120秒内做了什么。这可能是MQ代码占用了很多时间,但可能不是。显示的堆栈正好是调用onMessage()后120秒代码所在的位置

由于MQ正在通过网络向队列管理器发送数据,您可能需要查看您的网络,以查看其性能是否充分,或者可能是您的队列管理器。它可能负载很重

如果这种情况经常发生,一个很好的选择是在120秒内使用大量的JavaCore。然后,您可以看到堆栈在各个点上是什么

否则,我建议:

1) 在MDB中插入指令,确保您知道执行了哪些代码以及执行时间。只有这样才能排除MDB逻辑。
2)考虑你的网络
3) 可能跟踪您的队列管理器和MQ JMS代码-您可能需要IBM的帮助来确定IBM代码所花费的时间是否合适
4)如果120秒是OnMeMeAGE()的一个可接受的时间长度,考虑将事务超时值增加到大于OnMeXeAGE()的可接受时间的最大值。