【问题标题】:Websphere hung thread - with MQ upgradeWebsphere 挂起线程 - 使用 MQ 升级
【发布时间】:2016-09-06 11:16:28
【问题描述】:

最近我们将 MQ 服务器升级到 8.0.0.5,之后我们的应用程序无法运行。从服务器控制台获取以下错误日志。 由于以下原因在 Servlet 中终止了消息 - MQRC_NO_MSG_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)

这个问题我需要帮助。

【问题讨论】:

    标签: websphere ibm-mq


    【解决方案1】:
    1. NO_MSG_AVAILABLE (2033) 仅表示 - 您的应用程序发出了 MQGET 并且未找到任何消息(满足选择标准,包括消息 ID/相关 ID 和/或任何其他内容(如果指定了任何内容)。 )

    2. 我冒昧地猜测您使用MQGMO_WAIT 发出MQGET,并将超时设置为一个相当高的值(或UNLIMITED。)由于没有可用的消息,您结束挂了线程。不是 MQ,而是应用程序本身。

    简而言之,我在这些消息中没有看到 MQ 有任何问题。像往常一样升级或环境中的任何变化,检查还有什么变化。检查消息发送者发生了什么。

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

    【讨论】:

      【解决方案2】:

      我看到你在做 Pub/Sub。如果订阅时间少于 2.5 秒,我已经看到了一些非常不稳定的事情。对于 MQ v7.5.0.5 和 MQ v8.0.0.4,我一直在使用它。目前,我使用 5 秒,一切都很好。

      我强烈建议您与 IBM 建立 PMR。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-13
        相关资源
        最近更新 更多