The following sections describe how to enable the engine tier cache for improved performance with SIP-aware load balancers:
As described in Overview of the WebLogic SIP Server Architecture, in the default WebLogic SIP Server configuration the engine tier cluster is stateless. A separate data tier cluster manages call state data in one or more partitions, and engine tier servers fetch and write data in the data tier as necessary. Engines can write call state data to multiple replicas in each partition to provide automatic failover should a data tier replica going offline.
WebLogic SIP Server also provides the option for engine tier servers to cache a portion of the call state data locally, as well as in the data tier. When a local cache is used, an engine tier server first checks its local cache for existing call state data. If the cache contains the required data, and the local copy of the data is up-to-date (compared to the data tier copy), the engine locks the call state in the data tier but reads directly from its cache. This improves response time performance for the request, because the engine does not have to retrieve the call state data from a data tier server.
The engine tier cache stores only the call state data that has been most recently used by engine tier servers. Call state data is moved into an engine’s local cache as necessary in order to respond to client requests or to refresh out-of-date data. If the cache is full when a new call state must be written to the cache, the least-recently accessed call state entry is first removed from the cache. The size of the engine tier cache is not configurable.
Using a local cache is most beneficial when a SIP-aware load balancer manages requests to the engine tier cluster. With a SIP-aware load balancer, all of the requests for an established call are directed to the same engine tier server, which improves the effectiveness of the cache. If you do not use a SIP-aware load balancer, the effectiveness of the cache is limited, because subsequent requests for the same call may be distributed to different engine tier severs (having different cache contents).
Engine tier caching is enabled by default. To disable partial caching of call state data in the engine tier, specify the engine-call-state-cache-enabled
element in sipserver.xml
:
<engine-call-state-cache-enabled>false</engine-call-state-cache-enabled>
When enabled, the cache size is fixed at a maximum of 250 call states. The size of the engine tier cache is not configurable.
SipPerformanceRuntime
monitors the behavior of the engine tier cache. Table 7-1 describes the MBean attributes.
When enabled, the size of the cache is fixed at 250 call states. Because the cache consumes memory, you may need to modify the JVM settings used to run engine tier servers to meet your performance goals. Cached call states are maintained in the tenured store of the garbage collector. Try reducing the fixed “NewSize” value when the cache is enabled (for example, -XX:MaxNewSize=32m -XX:NewSize=32m
). Note that the actual value depends on the call state size used by applications, as well as the size of the applications themselves.