如何在 WAS 7 中解决此超时异常

Posted

技术标签:

【中文标题】如何在 WAS 7 中解决此超时异常【英文标题】:how to resolve this Timeout exception in WAS 7 【发布时间】:2014-04-11 06:18:37 【问题描述】:

我的 java 程序出现超时异常。

 [4/10/14 6:27:02:859 CDT] 00000004 TimeoutManage I   WTRN0006W: Transaction 000001454B5F86E80000000100007366C376DBAB11CE46C9F72BF0EF6B270F9458C6856F000001454B5F86E80000000100007366C376DBAB11CE46C9F72BF0EF6B270F9458C6856F00000001 has timed out after 300 seconds.
    [4/10/14 6:27:02:862 CDT] 00000004 TimeoutManage I   WTRN0124I: When the timeout occurred the thread with which the transaction is, or was most recently, associated was Thread[ORB.thread.pool : 3,5,main]. The stack trace of this thread when the timeout occurred was: 
        java.lang.Object.wait(Native Method)
        java.lang.Object.wait(Object.java:196)
        com.ibm.rmi.iiop.OutCallDesc.waitForResponse(OutCallDesc.java:58)
        com.ibm.rmi.iiop.Connection.getCallStream(Connection.java:2341)
        com.ibm.rmi.iiop.Connection.send(Connection.java:2295)
        com.ibm.rmi.iiop.ClientRequestImpl.invoke(ClientRequestImpl.java:338)
        com.ibm.rmi.corba.ClientDelegate.invoke(ClientDelegate.java:424)
        com.ibm.CORBA.iiop.ClientDelegate.invoke(ClientDelegate.java:1122)
        com.ibm.rmi.corba.ClientDelegate.invoke(ClientDelegate.java:708)
        com.ibm.CORBA.iiop.ClientDelegate.invoke(ClientDelegate.java:1152)
        org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:484)
        com.facade._ARFacade_Stub.getLetter(_ARFacade_Stub.java:1109)
        com.delegate.ARDelegate.getLetter(ARDelegate.java:730)
        com.impl.ARImpl.invokeAR(ARImpl.java:360)

我观察到我必须增加事务的超时时间。但我不知道我的假设是否正确......

您能否指导我针对此超时异常采取纠正措施...?

或者我需要查看错误日志中提到的 _ARFacade_Stub.java,AReceivableDelegate.java...

【问题讨论】:

你有没有偶然发现这个? 【参考方案1】:

您的超时发生的确切原因对我们来说很难做到。您需要查看事务中所做的事情,看看某些事情是否需要很长时间或太长时间。如果花费的时间太长,您需要查看那里出了什么问题,但是鉴于上述描述,我们很难为您提供帮助。尤其要查看您是否正在用完资源,并且超时的线程正在等待该资源,但长时间或永远无法获得它。

也可能是无论您做什么都需要很长时间,这很正常。根据您的标签,您正在使用 WebSphere Portal,并且有很多事情可能需要超过五分钟的时间。如果是这种情况,您可以增加事务超时值。

以下是更改这些值的方法:

    登录管理控制台。 导航到交易服务面板。 WebSphere Application Server 7.0:单击服务器 > 服务器类型 > WebSphere 应用程序服务器 > server_name > 容器服务 > 事务服务。 增加总事务生存期超时。默认值为 120。 增加最大事务超时。默认值为 300 秒。 停止并重新启动 WebSphere Application Server。

这些步骤取自 IBM InfoCenter

【讨论】:

实际上我在 getLetter() 方法中使用了一个选择查询...这是一个休眠查询...注意 getLetter()... 听起来像一个简单的查询,我会检查一下查询是否真的需要那么长时间,或者您是否用完了数据库连接并且超时是因为等待连接。 无济于事,我无法从这里确定是否以及为什么需要很长时间。您需要监控查询执行所需的时间以及数据库的可用连接数。

以上是关于如何在 WAS 7 中解决此超时异常的主要内容,如果未能解决你的问题,请参考以下文章

Exception of type 'System.Exception' was thrown. 如何解决

长时间请求 报 Thread was being aborted 异常

会话超时在 IIS 7 中如何工作?

android中如何获取超时时长的异常

FeignClient 超时如何解决

解决 Tasks support was removed in SonarQube 7.6. 的问题