Java virtual machine cache settings
Set JVM custom properties to maintain cache entries that are saved to disk.
We can set the custom properties globally to affect all cache instances or we can set the custom property on a single cache instance. In most cases, set the properties on the individual cache instances. To set the custom properties on the default cache instance, use the global option. If we set the same property both globally and on a cache instance, the value that is set on the cache instance overrides the global value.
To configure the custom properties on a single object cache instance or servlet cache instance...
- In the administrative console, click one of the following paths:
- To configure a servlet cache instance, click...
Resources > Cache instances > Servlet cache instances > servlet_cache_instance_name > Custom properties > New
- To configure an object cache instance, click...
Resources > Cache instances > Object cache instances > object_cache_instance_name > New
- Type the name of the custom property.
When configuring these custom properties on a single cache instance, we do not use the full property path. For example, type...
explictBufferLimitOnStop
...to configure the custom property...
com.ibm.ws.cache.CacheConfig.explictBufferLimitOnStop
- Type a valid value for the property in the Value field.
- Save the property and restart WebSphere Application Server.
To configure the custom property globally across all configured cache instances...
- In the administrative console, click...
Servers > Application servers > server > Java and process management > Process management > Process definition > Java virtual machine > Custom properties > New
- In the name field, type the name of the custom property...
com.ibm.ws.cache.CacheConfig.explictBufferLimitOnStop
- Type a valid value for the property in the Value field.
- Save the property and restart WAS.
Also use these properties to tune the delay offload function for the disk cache.
Important: Setting these custom properties using the wsadmin command is deprecated for WAS v7.0. Use the administrative console to set these properties. The individual property descriptions include information on how to use the administrative console to set these properties.
The delay offload function uses extra memory buffers for dependency IDs and templates to delay the disk offload and minimize the input and output operations. However, if most of our cache IDs are longer than 100 bytes, the delay offload function might use too much memory. Use any combination of the following properties to tune the configuration:
- To increase or decrease the in-memory limit of cache IDs for dependency ID and template buffers, use the custom property...
com.ibm.ws.cache.CacheConfig.htodDelayOffloadEntriesLimit
- To disable the disk cache delay offload function, use the custom property...
com.ibm.ws.cache.CacheConfig.htodDelayOffload
Disabling this property saves all cache entries to disk immediately after removing them from the memory cache.
We can define the following Java virtual machine cache settings:
- com.ibm.ws.cache.CacheConfig.explictBufferLimitOnStop
- com.ibm.ws.cache.CacheConfig.htodCleanupFrequency
- com.ibm.ws.cache.CacheConfig.htodDelayOffloadEntriesLimit
- com.ibm.ws.cache.CacheConfig.lruToDiskTriggerPercent
- com.ibm.ws.cache.CacheConfig.lruToDiskTriggerTime
com.ibm.ws.cache.CacheConfig.explictBufferLimitOnStop
If set to 0, there is no limit to the number of offloads that can occur. Only positive integers are accepted as values for this property. If the number of entries in the explicit invalidation buffer is greater than the specified limit, all of the disk files for this specified cache instance are deleted after the server stops.
Use this custom property when the flush-to-disk-on-stop feature is enabled. When the server is stopping, offloads are limited to the value specified for this property, pending removal of entries in the explicit invalidation buffer.
Important: We cannot use the administrative console to set this property.
com.ibm.ws.cache.CacheConfig.htodCleanupFrequency
Change the amount of time between disk cache cleanup.
Important: Setting this custom property manually is deprecated for V6.1. Therefore, we should use the administrative console to set this property. To set this property in the administrative console, click one of the following paths:
- To configure a servlet cache instance, click...
Resources > Cache instances > Servlet cache instances > servlet_cache_instance_name
- To configure an object cache instance, click...
Resources > Cache instances > Object cache instances > object_cache_instance_name
Then:
- Under Disk Cache setting, select the Enable disk offload field if it is not already selected.
- Under Performance Settings, select Balanced performance and balanced memory usage or Custom.
- In the Disk cache cleanup frequency field, specify an appropriate length of time, in minutes.
By default, the disk cache cleanup is scheduled to run at midnight to remove expired cache entries and cache entries that have not been accessed in the past 24 hours. However, if we have thousands of cache entries that might expire within one or two hours, the files in the disk cache can grow large and become unmanageable. Use the com.ibm.ws.cache.CacheConfig.htodCleanupFrequency custom property to change the time interval between disk cache cleanup.
Information Value Units minutes For example, a value of 60 means 60 minutes between each disk cache cleanup.
Default 0 The disk cache cleanup occurs at midnight every 24 hours.
com.ibm.ws.cache.CacheConfig.htodDelayOffloadEntriesLimit
Specify the number of different cache IDs that can be saved in memory for the dependency ID and template buffers. Consider increasing this value if we have a lot of memory in the server and we want to increase the performance of our disk cache.
Important: Setting this custom property using the wsadmin command is deprecated for V7.0. Therefore, we should use the administrative console to set this property. To set this property in the administrative console, click one of the following paths:
- To configure a servlet cache instance, click...
Resources > Cache instances > Servlet cache instances > servlet_cache_instance_name
- To configure an object cache instance, click...
Resources > Cache instances > Object cache instances > object_cache_instance_name
Then:
- Under Disk Cache setting, select the Enable disk offload field, if it is not already selected.
- Under Disk Cache settings, select Limit disk cache size in entries, if it is not already selected.
- In the Disk cache size field, specify the number of cache IDs that can be saved in memory for the dependency ID and template buffers.
Information Value Units number of cache IDs For example, a value of 1000 means that each dependency ID or template ID can have up to 1000 different cache IDs in memory.
Default 1000 Minimum 100 com.ibm.ws.cache.CacheConfig.lruToDiskTriggerPercent
Set the percentage of the memory cache size to be used as an overflow buffer when disk offload is enabled.
Cache entries in the overflow buffer are purged and asynchronously offloaded to disk at a frequency of lruToDiskTriggerTime milliseconds. If the memory overflow buffer is full, cache entries are offloaded to disk synchronously on the thread for the caller.
Information Value Units integer, percentage Lower bound 0 Upper bound 100 Scope Configurable per cache instance. com.ibm.ws.cache.CacheConfig.lruToDiskTriggerTime
Set the frequency with which cache entries in memory are asynchronously offloaded to disk when the disk offload feature is enabled.
Information Value Units integer, milliseconds Lower bound 0 Upper bound 5000 Scope Applicable to all cache instances.
Configure dynamic cache disk offload Troubleshooting tips for the dynamic cache service