最近我们将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)
我需要帮助解决这个问题。
答案 0 :(得分:2)
NO_MSG_AVAILABLE
(2033)就是这样 - 您的应用程序发出MQGET
并且未找到任何消息(满足选择条件,包括消息ID /相关ID和/或其他任何其他内容任何事都被指定。)
我猜想您发出MQGET
MQGMO_WAIT
,并将超时设置为相当高的值(或UNLIMITED
。)由于没有消息可用,你最终挂起线程。不是MQ,而是应用程序本身。
简而言之,我在这些消息中看不到MQ的任何问题。与升级或环境中的任何更改一样,检查还有哪些更改。检查邮件发件人的情况。
并且避免在Web容器中等待很长时间(当然UNLIMITED
超出范围。)理想情况下,异步执行。或者至少限制等待 - 例如,15秒的超时是充足的,作为一个经验法则。如果您的后端在15秒内无法响应,则表示出现问题。许多Web应用程序甚至不会容忍15秒的延迟。
答案 1 :(得分:0)
我看到你在做Pub / Sub。如果获得订阅的时间少于2.5秒,我会看到一些相当不稳定的东西。对于MQ v7.5.0.5和MQ v8.0.0.4,我已经把它挂在我身上了。目前,我使用5秒钟,一切都很好。
我强烈建议您与IBM一起开启PMR。