Weblogic Coherence Cache中的超时异常

时间:2014-05-27 23:17:02

标签: caching weblogic oracle-coherence

我们正在使用WebLogic Server 10.3.4,其中包含3个托管服务器和一致性缓存的群集。最近,当应用程序尝试更新(添加或编辑)缓存时,我们遇到了一些超时异常。频率大约是每小时几次,它只发生在一些请求中,而不是全部,因为大部分时间应用程序仍然可以更新缓存。

我们在coherence xml文件中设置了单位计算器的上限和策略。我们试图监视内存使用情况,因为我们担心它可能是GC,但不太可能。每个受管服务器上的堆大小设置为2GB,并且当缓存远未完全填充时会出现异常。此外,我们已经完成了将记录插入完整缓存的测试,它仍然按预期工作。

所以我想问一下我们应该查看哪些信息才能理解为什么会有这样的例外。

 <Caught exception com.tangosol.net.RequestTimeoutException: Request timed out after 15016 millis, forwarding details to client.
com.tangosol.net.RequestTimeoutException: Request timed out after 15016 millis
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.Grid.checkRequestTimeout(Grid.CDB:8)
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.Grid.poll(Grid.CDB:53)
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.Grid.poll(Grid.CDB:11)
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.ReplicatedCache.requestIssue(ReplicatedCache.CDB:8)
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.ReplicatedCache.updateResource(ReplicatedCache.CDB:38)
    at com.tangosol.coherence.component.util.CacheHandler.put(CacheHandler.CDB:11)
    at com.tangosol.coherence.component.util.CacheHandler.put(CacheHandler.CDB:1)
    at com.tangosol.coherence.component.util.SafeNamedCache.put(SafeNamedCache.CDB:1)

连贯性片段xml:

 <replicated-scheme>
              <scheme-name>@coherence.membership.number.cache.scheme@</scheme-name>
              <request-timeout>15000ms</request-timeout>
              <backing-map-scheme>
                <local-scheme>
                  <scheme-name>local-with-eviction-for-membership-num</scheme-name>
                  <eviction-policy>LRU</eviction-policy>
                  <high-units>32000</high-units>
                  <low-units>10</low-units>           
                  <unit-calculator>FIXED</unit-calculator>
                  <expiry-delay>@coherence.membership.number.cache.expiryminutes@m</expiry-delay>
                </local-scheme>
              </backing-map-scheme>
          </replicated-scheme>
        <replicated-scheme>

1 个答案:

答案 0 :(得分:2)

  1. 这是请求超时。请求超时用于避免调用线程块超过&#34; n&#34;秒。如果这不是所需的行为,您可以从配置中删除请求超时。

  2. 通常,偶尔的超时是由长时间的GC暂停引起的。听起来您的应用程序可能偶尔会有很长的GC停顿时间。使用&#34;详细的GC&#34; JVM上的选项记录GC时间。