RekLun
RekLun

Reputation: 144

Timeout Exception in Weblogic Coherence Cache

We are using WebLogic Server 10.3.4 with a setup of a cluster of 3 managed servers and a coherence cache. Recently, we got some timeout exception when the app tries to update(add or edit) the cache. The frequency is about a few times every hour and it just happens to some of the requests only, not all of them as most of time the apps can still update the cache.

We have set the high limit and policy with unit calculator inside the coherence xml file. We tried to monitor the memory usage as we are worried it may be the GC but it is not likely. Heap size is set to 2GB on each managed server and the exception comes when the cache is far from fully filled. Moreover, we have done testing on inserting records to full cache and it still works as expected.

So I would like to ask what information we should look into in order to understand why there is such an exception.

 <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)

Snippet of coherence 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>

Upvotes: 1

Views: 5937

Answers (1)

cpurdy
cpurdy

Reputation: 1236

  1. That is a request time-out. A request time-out is used to avoid having a calling thread block for more than "n" seconds. You can remove the request time-out from the configuration if that is not the desired behavior.

  2. Generally, occasional time-outs are caused by long GC pauses. It sounds like your application may occasionally have long GC pauses. Use the "verbose GC" option on the JVM to log GC times.

Upvotes: 2

Related Questions