Websphere挂起线程-使用MQ升级

Websphere挂起线程-使用MQ升级,websphere,ibm-mq,Websphere,Ibm Mq,最近,我们将MQ服务器升级到8.0.0.5,之后我们的应用程序就无法工作了。从服务器控制台获取以下错误日志。 获取Servlet中终止的消息的原因如下-MQRC\u NO\u MSG\u AVAILABLE *********************STACK TRACE************************ com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2033'. at com.ibm.m

最近,我们将MQ服务器升级到8.0.0.5,之后我们的应用程序就无法工作了。从服务器控制台获取以下错误日志。 获取Servlet中终止的消息的原因如下-
MQRC\u NO\u MSG\u AVAILABLE

*********************STACK TRACE************************
com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2033'.
        at com.ibm.mq.MQDestination.getInt(MQDestination.java:683)
        at com.ibm.mq.MQDestination.get(MQDestination.java:473)
        at support.operations.inventory.mq.MQFWServlet.getMessage(MQFWServlet.java:77)
        at support.operations.inventory.mq.MQFWServlet.init(MQFWServlet.java:115)
        at support.operations.inventory.list.InvOnlineList.fetchData(InvOnlineList.java:75)
        at support.operations.inventory.servlets.SearchServlet.verifiedPost(SearchServlet.java:169)
        at support.operations.inventory.servlets.MasterServlet.doPost(MasterServlet.java:439)
        at support.operations.inventory.servlets.MasterServlet.doGet(MasterServlet.java:363)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:575)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1232)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:781)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:480)
        at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1114)
        at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:1385)
        at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:194)
        at support.operations.inventory.servlets.MasterServlet.forwardServlet(MasterServlet.java:621)
        at support.operations.inventory.servlets.ReRouteServlet.verifiedPost(ReRouteServlet.java:254)
        at support.operations.inventory.servlets.MasterServlet.doPost(MasterServlet.java:439)
        at support.operations.inventory.servlets.MasterServlet.doGet(MasterServlet.java:363)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:575)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1232)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:781)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:480)
        at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1114)
        at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3928)
        at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304)
        at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1007)
        at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1817)
        at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:463)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:530)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:316)
从WebSphere日志中,我可以看到以下错误消息:

[8/31/16 14:40:11:249 GMT] 000000a9 ThreadMonitor W   WSVR0605W: Thread "WebContainer : 3" (000000e5) has been active for 603065 milliseconds and may be hung.  There is/are 2
 thread(s) in total in the server that may be hung.
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:196)
在这个问题上我需要帮助

  • NO_MSG_AVAILABLE
    (2033)意味着-您的应用程序发出了一个
    MQGET
    ,但未找到任何消息(满足选择标准,包括消息id/相关性id和/或任何其他指定的消息)

  • 我大胆猜测,您使用
    MQGMO_WAIT
    发出
    MQGET
    ,并将超时设置为相当高的值(或
    UNLIMITED
    ),因为没有可用的消息,您最终挂起了线程。不是MQ,而是应用程序本身

  • 简言之,我在这些消息中没有看到MQ有任何错误。与往常一样,升级或环境中的任何更改,请检查其他更改。检查邮件发送者的情况


    并避免在Web容器中长时间等待(
    UNLIMITED
    当然是不受限制的。)理想情况下,异步执行。或者至少限制等待时间——例如,根据经验,15秒的超时时间就足够了。如果您的后端无法在15秒内响应,则说明出现了问题。而且许多Web应用程序甚至不能容忍15秒的延迟。

    我看到你在做Pub/Sub。如果订阅时间少于2.5秒,我看到了一些非常古怪的事情。对于mqv7.5.0.5和mqv8.0.0.4,我都有一个难题。目前,我用了5秒钟,一切都很好

    我强烈建议您与IBM建立PMR