The dynamic cache service works within an application server Java virtual machine (JVM), intercepting calls to cacheable objects. This article describes some common run-time and configuration problems and remedies.
Servlets are not cached
Recommended response | Enable servlet caching. On the Web container page of the administrative console, select the Enable servlet caching check box. |
Cache entries are not written to disk
Explanation | Cache entries are written to disk when the cache is full and new entries are added to the memory cache. Cache entries also are written to disk when the flushToDiskOnStop system property is set and the server is stopped. |
Recommended response | Verify that Disk offload is enabled on the Dynamic Cache Service page of the administrative console. Also verify that cache entries written to disk are serializable and do not have the PersistToDisk configuration set to false. |
Some servlets are not replicated or written to disk
Recommended response | Ensure that the attributes and response are serializable. If you
do not want to store the attributes, use the following property in your cache
policy:<property name="save-attributes">false</property> |
Dynamic cache service does not cache fragments on the Edge
Recommended response | Set the EdgeCacheable property to true in the cache
policy for those entries that are to be cached on the Edge.<property name="EdgeCacheable">true</property> |
Dynamic cache invalidations are not sent to the IBM HTTP Server (IHS) plug-in
Explanation | The DynaCacheEsi.ear file is required to send invalidations to external caches. |
Recommended response | Install DynaCacheEsi.ear using the administrative console. |
Cache entries are evicted often
Problem | The cache is full and new entries are added to the cache. |
Explanation | Cache entries are evicted when the cache is full and new entries are added to the cache. A LRU eviction mechanism removes the least recently used entry to make space for the new entries. |
Recommended response | Enable Disk offload on the Dynamic cache service settings page of the administrative console so the entries are written to disk. You can also increase the cache size to accommodate more entries in the cache. |
Cache entries in disk with timeout set to 0 expire after one day
Explanation | The maximum lifetime of an entry in disk cache is 24 hours. A timeout of 0 in the cache policy configures these entries to stay in disk cache for one whole day, unless they are evicted earlier. |
Recommended response | Set the timeout for the cache policy to a number less than 0. |
I cannot monitor cache entries on the Edge
Explanation | Use the cache monitor for monitoring contents in memory cache, disk cache and external caches (Edge cache). For the ESI processor's cache to be visible in the cache monitor, the DynaCacheEsi.ear application must be installed and the esiInvalidationMonitor property must be set to true in the plugin-cfg.xml file. Monitoring the ESI processor's cache entries on z/OS is not supported. |
Recommended response | Install the DynaCacheEsi.ear application and set the esiInvalidationMonitor property to true in the plugin-cfg.xml file. |
I want to cache static contents using the dynamic cache service
Explanation | You can cache static contents using the dynamic cache service. Static contents in WebSphere application server are served by the SimpleFileServlet file. |
Recommended response | Create a cache policy for the class com.ibm.ws.webcontainer.servlet.SimpleFileServlet.class to cache static contents. It is advisable to use the dynamic cache service for caching more expensive dynamic contents than static contents. |
I want to tune cache for my environment
Recommended response | Use the Tivoli Performance viewer to study the caching behavior for
your applications. Also, do the following:
|
File system I/O activity when the application server is idle
Symptom | You experience file system I/O activity when the application server is idle. WebSphere Application Server is polling the Hierarchical File System (HFS) for the cachespec.xml file, even when there are no cache policies defined. |
Explanation | Dynamic cache queries the file system every 30 seconds to check for updates to the cache policy file. By checking for cache policy file updates, dynamic cache can automatically update any changed cache policies. |
Possible response | The dynamic cache is enabled by default because several system components
rely on it for performance reasons. You can disable the dynamic cache service
by using a wsadmin script or through the administrative console. See Enabling the dynamic cache service for
more information. Note: By disabling dynamic cache you might experience slower performance of security because it uses the distributed map functionality of the dynamic cache service. |
Recommended response | Set flush=true on every <jsp: include> tag in the cacheable JSP file. |