如何解决 Jboss EAP 7.1.4 java.util.concurrent.TimeoutException:30000 毫秒内未收到调用响应
How to resolve Jboss EAP 7.1.4 java.util.concurrent.TimeoutException: No invocation response received in 30000 milliseconds
当 运行 应用程序时,JBoss EAP 7.1.4 GA 服务器出现 concurrent.Timeout 异常。不幸的是,这不是一个永恒的问题。
在不同的功能流程中不时发生。
例外情况是:
javax.ejb.EJBException: java.util.concurrent.TimeoutException: No invocation response received in 30000 milliseconds
Caused by: javax.ejb.EJBException: java.util.concurrent.TimeoutException: No invocation response received in 30000 milliseconds
at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:207)
at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:112)
... 17 common frames omitted
Caused by: java.util.concurrent.TimeoutException: No invocation response received in 30000 milliseconds
at org.jboss.ejb.client.EJBClientInvocationContext.lambda$awaitResponse(EJBClientInvocationContext.java:876)
at org.jboss.ejb.client.EJBClientInvocationContext$ThrowableResult.getResult(EJBClientInvocationContext.java:1132)
at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:567)
at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:503)
at org.jboss.ejb.protocol.remote.RemotingEJBClientInterceptor.handleInvocationResult(RemotingEJBClientInterceptor.java:56)
at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:569)
at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:503)
at org.jboss.ejb.client.TransactionPostDiscoveryInterceptor.handleInvocationResult(TransactionPostDiscoveryInterceptor.java:133)
at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:569)
at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:503)
at org.jboss.ejb.client.DiscoveryEJBClientInterceptor.handleInvocationResult(DiscoveryEJBClientInterceptor.java:114)
at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:569)
at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:503)
at org.jboss.ejb.client.NamingEJBClientInterceptor.handleInvocationResult(NamingEJBClientInterceptor.java:78)
at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:569)
at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:503)
在我的 JBoss 配置中使用以下设置:
调用超时 30 秒
事务超时 300 秒(这是 JBoss 中的默认值)
目前的调查结果:
https://access.redhat.com/solutions/1223983
这个解决方案说要升级JBoss6.4,但我已经在使用7.1.4版本
JBoss 错误:
https://issues.jboss.org/browse/JBEAP-8553
https://issues.jboss.org/browse/JBEAP-12075
我使用的 JBoss 以下版本修复了所有错误。
但此外,我注意到超时时会出现此日志:
WARN [com.arjuna.ats.arjuna] (Periodic Recovery) [] Transaction 0:ffffac18bb91:-672b1e8b:5c25eea9:3be85 has 1 heuristic participant(s)!
WARN [com.arjuna.ats.jta] (Periodic Recovery) [] ARJUNA016037: Could not find new XAResource to use for recovering non-serializable XAResource XAResourceRecord < resource:null, txid:< formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffffac18bb91:-672b1e8b:5c25eea9:3be85, node_name=1, branch_uid=0:ffffac18bb91:-672b1e8b:5c25eea9:3be89, subordinatenodename=null, eis_name=java:jboss/datasources/ix3 >, heuristic: TwoPhaseOutcome.HEURISTIC_HAZARD, product: Microsoft SQL Server/14.00.2002, jndiName: java:jboss/datasources/ix3 com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord@7f64f479 >
WARN [com.arjuna.ats.jta] (Periodic Recovery) [] XAResourceRecord restored heuristic instance: XAResourceRecord < resource:null, txid:< formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffffac18bb91:-672b1e8b:5c25eea9:3be85, node_name=1, branch_uid=0:ffffac18bb91:-672b1e8b:5c25eea9:3be89, subordinatenodename=null, eis_name=java:jboss/datasources/ix3 >, heuristic: TwoPhaseOutcome.HEURISTIC_HAZARD, product: Microsoft SQL Server/14.00.2002, jndiName: java:jboss/datasources/ix3 com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord@7f64f479 >
WARN [com.arjuna.ats.arjuna] (Periodic Recovery) [] Transaction 0:ffffac18bb91:-672b1e8b:5c25eea9:3be85 restored heuristic participant XAResourceRecord < resource:null, txid:< formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffffac18bb91:-672b1e8b:5c25eea9:3be85, node_name=1, branch_uid=0:ffffac18bb91:-672b1e8b:5c25eea9:3be89, subordinatenodename=null, eis_name=java:jboss/datasources/ix3 >, heuristic: TwoPhaseOutcome.HEURISTIC_HAZARD, product: Microsoft SQL Server/14.00.2002, jndiName: java:jboss/datasources/ix3 com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord@7f64f479 >
试图做一些研究并找到问题,但到目前为止没有运气。
Never ending periodic recovery of heuristic participants
JBoss spamming XA Recovery warnings
哪位有这方面经验的可以给点建议,好吗?
注意:一些异常的stack trace因为有公司相关的代码所以不能在这里发布。对此表示歉意
这个问题已经解决了。这是因为以下原因。
我们的服务器(VM)很少因为 Microsoft windows 更新而挂起。最近的更新是2GB,安装的时候挂了。 CPU 大部分时间内存使用率为 100%,没有分配给其他处理。
另一个原因是我们的集群配置行为不当,因为集群节点的请求之一被服务器防火墙阻止。这是一个配置错误,因为忘记添加防火墙规则。
一旦解决了这两个问题,问题就不会再发生了。
如果有人遇到此类问题,建议在进行深入调查之前验证所有基础架构基础知识。
当 运行 应用程序时,JBoss EAP 7.1.4 GA 服务器出现 concurrent.Timeout 异常。不幸的是,这不是一个永恒的问题。 在不同的功能流程中不时发生。
例外情况是:
javax.ejb.EJBException: java.util.concurrent.TimeoutException: No invocation response received in 30000 milliseconds
Caused by: javax.ejb.EJBException: java.util.concurrent.TimeoutException: No invocation response received in 30000 milliseconds
at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:207)
at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:112)
... 17 common frames omitted
Caused by: java.util.concurrent.TimeoutException: No invocation response received in 30000 milliseconds
at org.jboss.ejb.client.EJBClientInvocationContext.lambda$awaitResponse(EJBClientInvocationContext.java:876)
at org.jboss.ejb.client.EJBClientInvocationContext$ThrowableResult.getResult(EJBClientInvocationContext.java:1132)
at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:567)
at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:503)
at org.jboss.ejb.protocol.remote.RemotingEJBClientInterceptor.handleInvocationResult(RemotingEJBClientInterceptor.java:56)
at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:569)
at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:503)
at org.jboss.ejb.client.TransactionPostDiscoveryInterceptor.handleInvocationResult(TransactionPostDiscoveryInterceptor.java:133)
at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:569)
at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:503)
at org.jboss.ejb.client.DiscoveryEJBClientInterceptor.handleInvocationResult(DiscoveryEJBClientInterceptor.java:114)
at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:569)
at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:503)
at org.jboss.ejb.client.NamingEJBClientInterceptor.handleInvocationResult(NamingEJBClientInterceptor.java:78)
at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:569)
at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:503)
在我的 JBoss 配置中使用以下设置:
调用超时 30 秒
事务超时 300 秒(这是 JBoss 中的默认值)
目前的调查结果:
https://access.redhat.com/solutions/1223983
这个解决方案说要升级JBoss6.4,但我已经在使用7.1.4版本
JBoss 错误:
https://issues.jboss.org/browse/JBEAP-8553
https://issues.jboss.org/browse/JBEAP-12075
我使用的 JBoss 以下版本修复了所有错误。
但此外,我注意到超时时会出现此日志:
WARN [com.arjuna.ats.arjuna] (Periodic Recovery) [] Transaction 0:ffffac18bb91:-672b1e8b:5c25eea9:3be85 has 1 heuristic participant(s)!
WARN [com.arjuna.ats.jta] (Periodic Recovery) [] ARJUNA016037: Could not find new XAResource to use for recovering non-serializable XAResource XAResourceRecord < resource:null, txid:< formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffffac18bb91:-672b1e8b:5c25eea9:3be85, node_name=1, branch_uid=0:ffffac18bb91:-672b1e8b:5c25eea9:3be89, subordinatenodename=null, eis_name=java:jboss/datasources/ix3 >, heuristic: TwoPhaseOutcome.HEURISTIC_HAZARD, product: Microsoft SQL Server/14.00.2002, jndiName: java:jboss/datasources/ix3 com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord@7f64f479 >
WARN [com.arjuna.ats.jta] (Periodic Recovery) [] XAResourceRecord restored heuristic instance: XAResourceRecord < resource:null, txid:< formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffffac18bb91:-672b1e8b:5c25eea9:3be85, node_name=1, branch_uid=0:ffffac18bb91:-672b1e8b:5c25eea9:3be89, subordinatenodename=null, eis_name=java:jboss/datasources/ix3 >, heuristic: TwoPhaseOutcome.HEURISTIC_HAZARD, product: Microsoft SQL Server/14.00.2002, jndiName: java:jboss/datasources/ix3 com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord@7f64f479 >
WARN [com.arjuna.ats.arjuna] (Periodic Recovery) [] Transaction 0:ffffac18bb91:-672b1e8b:5c25eea9:3be85 restored heuristic participant XAResourceRecord < resource:null, txid:< formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffffac18bb91:-672b1e8b:5c25eea9:3be85, node_name=1, branch_uid=0:ffffac18bb91:-672b1e8b:5c25eea9:3be89, subordinatenodename=null, eis_name=java:jboss/datasources/ix3 >, heuristic: TwoPhaseOutcome.HEURISTIC_HAZARD, product: Microsoft SQL Server/14.00.2002, jndiName: java:jboss/datasources/ix3 com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord@7f64f479 >
试图做一些研究并找到问题,但到目前为止没有运气。
Never ending periodic recovery of heuristic participants
JBoss spamming XA Recovery warnings
哪位有这方面经验的可以给点建议,好吗?
注意:一些异常的stack trace因为有公司相关的代码所以不能在这里发布。对此表示歉意
这个问题已经解决了。这是因为以下原因。
我们的服务器(VM)很少因为 Microsoft windows 更新而挂起。最近的更新是2GB,安装的时候挂了。 CPU 大部分时间内存使用率为 100%,没有分配给其他处理。
另一个原因是我们的集群配置行为不当,因为集群节点的请求之一被服务器防火墙阻止。这是一个配置错误,因为忘记添加防火墙规则。
一旦解决了这两个问题,问题就不会再发生了。
如果有人遇到此类问题,建议在进行深入调查之前验证所有基础架构基础知识。