3

我正在使用 JMeter 进行性能测试以评估我们的产品。我们的产品部署在 Weblogic 服务器中,并具有 Oracle 数据库。

在性能测试中,JMeter 客户端访问一组驻留在 weblogic 服务器中的 EJB 并调用相关函数。

但是在测试之后,我在 jmeter 日志中看到了一些异常。我把测试过程中遇到的异常放在下面。由于负载,JMeter 客户端似乎无法访问 weblogic 服务器中的 EJB 实例。但我不确定。你能帮我解决这个问题吗?

javax.ejb.EJBException: No message was received for: '240' seconds; nested exception is: weblogic.rjvm.PeerGoneException: No message was received for: '240' seconds
weblogic.rjvm.PeerGoneException: No message was received for: '240' seconds
    at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:234)
    at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:348)
    at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:259)
    at com.xxxx.xxx.impl.adminagent.AdminAgentInfoSessionBeanWithAffinity_337280_AdminAgentInfoSessionRemoteWithAffinityImpl_1034_WLStub.setAdminAgentInfoForSecureElement(Unknown Source)
    at sun.reflect.GeneratedMethodAccessor62.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.invoke(RemoteBusinessIntfProxy.java:73)
    at $Proxy7.setAdminAgentInfoForSecureElement(Unknown Source)
    at com.xxxx.xxx.bench.subscription.SubscriptionUseCases.addAdminAgentInfo(SubscriptionUseCases.java:388)
    at com.xxxx.xxx.bench.sampler.m1.create.AddAATriggerInfoSampler.runTest(AddAATriggerInfoSampler.java:145)
    at org.apache.jmeter.protocol.java.sampler.JavaSampler.sample(JavaSampler.java:165)
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:300)
    at java.lang.Thread.run(Unknown Source)
javax.ejb.EJBException: No message was received for: '240' seconds; nested exception is: weblogic.rjvm.PeerGoneException: No message was received for: '240' seconds
    at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.unwrapRemoteException(RemoteBusinessIntfProxy.java:112)
    at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.invoke(RemoteBusinessIntfProxy.java:91)
    at $Proxy7.setAdminAgentInfoForSecureElement(Unknown Source)
    at com.xxxx.xxx.bench.subscription.SubscriptionUseCases.addAdminAgentInfo(SubscriptionUseCases.java:388)
    at com.xxxx.xxx.bench.sampler.m1.create.AddAATriggerInfoSampler.runTest(AddAATriggerInfoSampler.java:145)
    at org.apache.jmeter.protocol.java.sampler.JavaSampler.sample(JavaSampler.java:165)
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:300)
    at java.lang.Thread.run(Unknown Source)
Caused by: weblogic.rjvm.PeerGoneException: No message was received for: '240' seconds
4

1 回答 1

3

根据Oracle 论坛帖子,当客户端(在这种情况下为 JMeter)和服务器(部署在 ManagedServer 上的 EJB 应用程序)之间没有网络连接时,会在特定时间限制(默认值:240 秒)内抛出 PeerGoneException。

如果您正在执行的性能测试配置是模拟实际生产级别的流量,那么执行 WebLogic 服务器的调整是一个好主意。

要执行调整,请转到:管理控制台 -> 服务器 -> serverName -> 调整(选项卡)-> 高级(底部的链接)。Period Length并且Idle Periods Until Timeout是需要更改的属性。默认值 240 秒是这样计算的:周期长度 * 超时前的空闲周期。因此调整这些值以设置最佳值(基于 JMeter 性能测试)。尝试使用不同的值并确定更接近默认值的最佳值。

于 2012-10-31T10:02:31.870 回答