aboutsummaryrefslogtreecommitdiff
path: root/subsonic-main/src/main/resources/ehcache.xml
diff options
context:
space:
mode:
Diffstat (limited to 'subsonic-main/src/main/resources/ehcache.xml')
-rw-r--r--subsonic-main/src/main/resources/ehcache.xml297
1 files changed, 297 insertions, 0 deletions
diff --git a/subsonic-main/src/main/resources/ehcache.xml b/subsonic-main/src/main/resources/ehcache.xml
new file mode 100644
index 00000000..a79999ef
--- /dev/null
+++ b/subsonic-main/src/main/resources/ehcache.xml
@@ -0,0 +1,297 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+CacheManager Configuration
+==========================
+An ehcache.xml corresponds to a single CacheManager.
+
+See instructions below or the ehcache schema (ehcache.xsd) on how to configure.
+
+System property tokens can be specified in this file which are replaced when the configuration
+is loaded. For example multicastGroupPort=${multicastGroupPort} can be replaced with the
+System property either from an environment variable or a system property specified with a
+command line switch such as -DmulticastGroupPort=4446. Another example, useful for Terracotta
+server based deployments is <terracottaConfig url="${serverAndPort}"/ and specify a command line
+switch of -Dserver36:9510
+
+The attributes of <ehcache> are:
+* name - an optional name for the CacheManager. The name is optional and primarily used
+for documentation or to distinguish Terracotta clustered cache state. With Terracotta
+clustered caches, a combination of CacheManager name and cache name uniquely identify a
+particular cache store in the Terracotta clustered memory.
+* updateCheck - an optional boolean flag specifying whether this CacheManager should check
+for new versions of Ehcache over the Internet. If not specified, updateCheck="true".
+* dynamicConfig - an optional setting that can be used to disable dynamic configuration of caches
+associated with this CacheManager. By default this is set to true - i.e. dynamic configuration
+is enabled. Dynamically configurable caches can have their TTI, TTL and maximum disk and
+in-memory capacity changed at runtime through the cache's configuration object.
+* monitoring - an optional setting that determines whether the CacheManager should
+automatically register the SampledCacheMBean with the system MBean server.
+
+Currently, this monitoring is only useful when using Terracotta clustering and using the
+Terracotta Developer Console. With the "autodetect" value, the presence of Terracotta clustering
+will be detected and monitoring, via the Developer Console, will be enabled. Other allowed values
+are "on" and "off". The default is "autodetect". This setting does not perform any function when
+used with JMX monitors.
+-->
+<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="http://ehcache.sourceforge.net/ehcache.xsd"
+ updateCheck="false"
+ monitoring="off"
+ dynamicConfig="true">
+
+ <!--
+ DiskStore configuration
+ =======================
+
+ The diskStore element is optional. To turn off disk store path creation, comment out the diskStore
+ element below.
+
+ Configure it if you have overflowToDisk or diskPersistent enabled for any cache.
+
+ If it is not configured, and a cache is created which requires a disk store, a warning will be
+ issued and java.io.tmpdir will automatically be used.
+
+ diskStore has only one attribute - "path". It is the path to the directory where
+ .data and .index files will be created.
+
+ If the path is one of the following Java System Property it is replaced by its value in the
+ running VM. For backward compatibility these should be specified without being enclosed in the ${token}
+ replacement syntax.
+
+ The following properties are translated:
+ * user.home - User's home directory
+ * user.dir - User's current working directory
+ * java.io.tmpdir - Default temp file path
+ * ehcache.disk.store.dir - A system property you would normally specify on the command line
+ e.g. java -Dehcache.disk.store.dir=/u01/myapp/diskdir ...
+
+ Subdirectories can be specified below the property e.g. java.io.tmpdir/one
+
+ -->
+ <!-- NOTE: The path is overridden in net.sourceforge.subsonic.cache.CacheFactory -->
+ <diskStore path="java.io.tmpdir"/>
+
+
+ <!-- Uncomment this to enable cache monitoring. -->
+ <!--<cacheManagerPeerListenerFactory-->
+ <!--class="org.terracotta.ehcachedx.monitor.probe.ProbePeerListenerFactory"-->
+ <!--properties="monitorAddress=localhost, monitorPort=9889, memoryMeasurement=true" />-->
+ <!---->
+
+ <!--
+ Cache configuration
+ ===================
+
+ The following attributes are required.
+
+ name:
+ Sets the name of the cache. This is used to identify the cache. It must be unique.
+
+ maxElementsInMemory:
+ Sets the maximum number of objects that will be created in memory. 0 = no limit.
+ In practice no limit means Integer.MAX_SIZE (2147483647) unless the cache is distributed
+ with a Terracotta server in which case it is limited by resources.
+
+ maxElementsOnDisk:
+ Sets the maximum number of objects that will be maintained in the DiskStore
+ The default value is zero, meaning unlimited.
+
+ eternal:
+ Sets whether elements are eternal. If eternal, timeouts are ignored and the
+ element is never expired.
+
+ overflowToDisk:
+ Sets whether elements can overflow to disk when the memory store
+ has reached the maxInMemory limit.
+
+ The following attributes and elements are optional.
+
+ overflowToOffHeap:
+ (boolean) This feature is available only in enterprise versions of Ehcache.
+ When set to true, enables the cache to utilize off-heap memory
+ storage to improve performance. Off-heap memory is not subject to Java
+ GC. The default value is false.
+
+ maxMemoryOffHeap:
+ (string) This feature is available only in enterprise versions of Ehcache.
+ Sets the amount of off-heap memory available to the cache.
+ This attribute's values are given as <number>k|K|m|M|g|G|t|T for
+ kilobytes (k|K), megabytes (m|M), gigabytes (g|G), or terabytes
+ (t|T). For example, maxMemoryOffHeap="2g" allots 2 gigabytes to
+ off-heap memory.
+
+ This setting is in effect only if overflowToOffHeap is true.
+
+ Note that it is recommended to set maxElementsInMemory to at least 100 elements
+ when using an off-heap store, otherwise performance will be seriously degraded,
+ and a warning will be logged.
+
+ The minimum amount that can be allocated is 128MB. There is no maximum.
+
+ timeToIdleSeconds:
+ Sets the time to idle for an element before it expires.
+ i.e. The maximum amount of time between accesses before an element expires
+ Is only used if the element is not eternal.
+ Optional attribute. A value of 0 means that an Element can idle for infinity.
+ The default value is 0.
+
+ timeToLiveSeconds:
+ Sets the time to live for an element before it expires.
+ i.e. The maximum time between creation time and when an element expires.
+ Is only used if the element is not eternal.
+ Optional attribute. A value of 0 means that and Element can live for infinity.
+ The default value is 0.
+
+ diskPersistent:
+ Whether the disk store persists between restarts of the Virtual Machine.
+ The default value is false.
+
+ diskExpiryThreadIntervalSeconds:
+ The number of seconds between runs of the disk expiry thread. The default value
+ is 120 seconds.
+
+ diskSpoolBufferSizeMB:
+ This is the size to allocate the DiskStore for a spool buffer. Writes are made
+ to this area and then asynchronously written to disk. The default size is 30MB.
+ Each spool buffer is used only by its cache. If you get OutOfMemory errors consider
+ lowering this value. To improve DiskStore performance consider increasing it. Trace level
+ logging in the DiskStore will show if put back ups are occurring.
+
+ clearOnFlush:
+ whether the MemoryStore should be cleared when flush() is called on the cache.
+ By default, this is true i.e. the MemoryStore is cleared.
+
+ statistics:
+ Whether to collect statistics. Note that this should be turned on if you are using
+ the Ehcache Monitor. By default statistics is turned off to favour raw performance.
+ To enable set statistics="true"
+
+ memoryStoreEvictionPolicy:
+ Policy would be enforced upon reaching the maxElementsInMemory limit. Default
+ policy is Least Recently Used (specified as LRU). Other policies available -
+ First In First Out (specified as FIFO) and Less Frequently Used
+ (specified as LFU)
+
+ copyOnRead:
+ Whether an Element is copied when being read from a cache.
+ By default this is false.
+
+ copyOnWrite:
+ Whether an Element is copied when being added to the cache.
+ By default this is false.
+ -->
+
+
+ <!--
+ Default Cache configuration. These settings will be applied to caches
+ created programmatically using CacheManager.add(String cacheName).
+ This element is optional, and using CacheManager.add(String cacheName) when
+ its not present will throw CacheException
+
+ The defaultCache has an implicit name "default" which is a reserved cache name.
+
+ <defaultCache
+ maxElementsInMemory="10000"
+ eternal="false"
+ timeToIdleSeconds="120"
+ timeToLiveSeconds="120"
+ overflowToDisk="true"
+ diskSpoolBufferSizeMB="10"
+ maxElementsOnDisk="10000000"
+ diskPersistent="false"
+ diskExpiryThreadIntervalSeconds="120"
+ memoryStoreEvictionPolicy="LRU"
+ statistics="true"
+ />
+ -->
+
+ <cache name="mediaFileMemoryCache"
+ maxElementsInMemory="1000"
+ eternal="false"
+ timeToIdleSeconds="0"
+ timeToLiveSeconds="10"
+ overflowToDisk="false"
+ statistics="true"
+ />
+
+ <cache name="musicFileMemoryCache"
+ maxElementsInMemory="1000"
+ eternal="false"
+ timeToIdleSeconds="0"
+ timeToLiveSeconds="10"
+ overflowToDisk="false"
+ statistics="true"
+ />
+
+ <cache name="userCache"
+ maxElementsInMemory="1000"
+ eternal="false"
+ timeToIdleSeconds="172800"
+ timeToLiveSeconds="172800"
+ overflowToDisk="false"
+ diskSpoolBufferSizeMB="1"
+ statistics="true"
+ />
+
+ <!--
+ Sample caches. Following are some example caches. Remove these before use.
+ -->
+
+ <!--
+ Sample cache named sampleCache1
+ This cache contains a maximum in memory of 10000 elements, and will expire
+ an element if it is idle for more than 5 minutes and lives for more than
+ 10 minutes.
+
+ If there are more than 10000 elements it will overflow to the
+ disk cache, which in this configuration will go to wherever java.io.tmp is
+ defined on your system. On a standard Linux system this will be /tmp"
+
+ <cache name="sampleCache1"
+ maxElementsInMemory="10000"
+ maxElementsOnDisk="1000"
+ eternal="false"
+ overflowToDisk="true"
+ diskSpoolBufferSizeMB="20"
+ timeToIdleSeconds="300"
+ timeToLiveSeconds="600"
+ memoryStoreEvictionPolicy="LFU"
+ transactionalMode="off"
+ />
+ -->
+
+
+ <!--
+ Sample cache named sampleCache2
+ This cache has a maximum of 1000 elements in memory. There is no overflow to disk, so 1000
+ is also the maximum cache size. Note that when a cache is eternal, timeToLive and
+ timeToIdle are not used and do not need to be specified.
+
+ <cache name="sampleCache2"
+ maxElementsInMemory="1000"
+ eternal="true"
+ overflowToDisk="false"
+ memoryStoreEvictionPolicy="FIFO"
+ />
+ -->
+
+
+ <!--
+ Sample cache named sampleCache3. This cache overflows to disk. The disk store is
+ persistent between cache and VM restarts. The disk expiry thread interval is set to 10
+ minutes, overriding the default of 2 minutes.
+
+ <cache name="sampleCache3"
+ maxElementsInMemory="500"
+ eternal="false"
+ overflowToDisk="true"
+ timeToIdleSeconds="300"
+ timeToLiveSeconds="600"
+ diskPersistent="true"
+ diskExpiryThreadIntervalSeconds="1"
+ memoryStoreEvictionPolicy="LFU"
+ />
+ -->
+
+</ehcache>