javax.ejb.EJBException:JBAS014516:无法在5分钟内获取许可证 - 无法通过负载运行器在测试区域中重现

时间:2017-05-26 07:18:28

标签: jboss ejb loadrunner

我们在多个用户同时打开文档的同时在生产中遇到问题。[请参阅下面的描述]

    ERROR [org.jboss.as.ejb3.invocation] (http-/xx.xx.xx.xxx:xxxx-xxx) JBAS014134: EJB Invocation failed on component xxxxxx for method public abstract java.lang.String com.xxxxxxx.xxx.ejb.services.encryptionfile.xxxxxx.xxxxxx(java.lang.String): javax.ejb.EJBException: JBAS014516: Failed to acquire a permit within 5 MINUTES
    at org.jboss.as.ejb3.pool.strictmax.StrictMaxPool.get(StrictMaxPool.java:109) [jboss-as-ejb3-7.5.4.Final-redhat-4.jar:7.5.4.Final-redhat-4]
    at org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:47) [jboss-as-ejb3-7.5.4.Final-redhat-4.jar:7.5.4.Final-redhat-4]
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.2.Final-redhat-1.jar:1.1.2.Final-redhat-1]
    at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:278) [jboss-as-ejb3-7.5.4.Final-redhat-4.jar:7.5.4.Final-redhat-4]
    at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:330) [jboss-as-ejb3-7.5.4.Final-redhat-4.jar:7.5.4.Final-redhat-4]
    at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:242) [jboss-as-ejb3-7.5.4.Final-redhat-4.jar:7.5.4.Final-redhat-4]
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.2.Final-redhat-1.jar:1.1.2.Final-redhat-1]
    at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41) [jboss-as-ejb3-7.5.4.Final-redhat-4.jar:7.5.4.Final-redhat-4]
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.2.Final-redhat-1.jar:1.1.2.Final-redhat-1]
    at org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(WaitTimeInterceptor.java:43) [jboss-as-ejb3-7.5.4.Final-redhat-4.jar:7.5.4.Final-redhat-4]
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.2.Final-redhat-1.jar:1.1.2.Final-redhat-1]
    at org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(ShutDownInterceptorFactory.java:64) [jboss-as-ejb3-7.5.4.Final-redhat-4.jar:7.5.4.Final-redhat-4]
    at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.2.Final-redhat-1.jar:1.1.2.Final-redhat-1]
    at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:59) [jboss-as-ejb3-7.5.4.Final-redhat-4.jar:7.5.4.Final-redhat-4]

我试图在性能区域重现错误。最初我遇到了Java堆空间问题,后来通过增加Jboss配置文件的堆大小来解决这个问题。

但是,我无法通过Load runner [150并发用户点击]重现测试区域的实际prod错误。

  1. 有没有人知道"我们如何通过Load runner在测试区域中重现此错误。

  2. 当配置的EJB池耗尽时会发生此错误 - 意味着所有EJB当前正在使用"正在使用" (=处理),是否有人知道我们如何检查EJB池大小或bean,以便我们能够重现该问题。

  3. 如果有关方案和错误的更多信息,请告诉我吗?

    谢谢, perftest

2 个答案:

答案 0 :(得分:0)

要监控EJB池,请使用CLI启用池统计信息

  

/ subsystem = ejb3:write-attribute(name = enable-statistics,value = true)

然后在命令

下面运行
  

/deployment=xxxx.ear/subdeployment=xx-ejb.jar/subsystem=ejb3/stateless-session-bean=HelloBean:read-resource(包括运行时=真)

要解决此问题,您需要增加max-pool-size

  

strict-max-pool name =" slsb-strict-max-pool"最大池尺寸=" 20"   实例采集超时=" 5"   实例采集超时单元=" MINUTES" />

答案 1 :(得分:0)

通过增加服务器文件中的核心线程值来解决问题

    <short-running-threads>
    <core-threads count="150"/>
    <queue-length count="150"/>
    <max-threads count="150"/>
    <keep-alive-time time="10" unit="seconds"/>
    </short-running-threads>
    <long-running-threads>
    <core-threads count="150"/>
    <queue-length count="150"/>
    <max-threads count="150"/>
    <keep alive-time time="10" unit="seconds"/>
    </long-running-threads>

将值从50增加到150