Serverseitiges Tile-Caching: an/aus
Stellt man fest, dass der Server-Cache einen Engpass darstellt (also Dokumente zu häufig aus dem Cache expired werden und erneut geladen werden müssen), empfiehlt sich das Ausschalten des serverseitigen Tile-Cachings.
ConfigurationManager.getServerConfiguration().setTileCachingEnabled(false), Default: false
Clientseitiger Cache (Browser): immer aktiv
Serverseitiger Cache - typische Richtwerte:
| LRUCache | CompositeKeyCache (=Standard im JWT) | empfohlene Werte |
---|
jadice.viewer.cache.maxNumberOfCacheEntries | 3000 | 3000 (in JWT 90000) | 90000 → siehe Berechnung
Berechnung: - je Dokument wird ca. 2,5-4,5 MB im Cache belegt (JWT-Dokument, JWT-PageSegmente, Strukturinformationen aus der docpv) - haben wir empirisch ermittelt mit der Enterprise Demo und versch. Dokumenten
- im Mittel werden 10 Dokumente pro Minute geladen (Annahme)
- wir wollen erreichen, dass die Dokumente möglichst 30min im Cache bleiben
--> 10Doc*30min*2,5 MB = 750 MB bis 10*30*4,5 MB = 1350 MB - im Cache werden ca. 150-300 Entries pro Dokument erzeugt (aus Stichproben ermittelt) -> 10Doc*30min*300 = 90.000 Entries
- Hier würde ich tendenziell sogar höher gehen, so dass der Speicher der limitierende Faktor ist und nicht die Anzahl der Elemente
|
"jadice.viewer.cache.maximumExpiryObjectCountRatio" | 0.1f | 0.1f für LRUExpiryStrategy 10 für TileExpiryStrategy | 0.1f bzw. 10 (Achtung: Die TileExpiryStrategy im jadice web toolkit erwartet eine Prozentangabe!) |
"jadice.viewer.cache.minimumExpiryAge" | -1 | -1 (LRUExpiryStrategy +TileExpiryStrategy) (in JWT 60000) | 60000 // lifetime for cache entries. (in milliseconds) |
jadice.viewer.cache.sizeHighwaterMark" | -1 | -1 | Nicht empfohlen. Stattdessen lieber sizeHighwaterMarkPercent nutzen. |
jadice.viewer.cache.sizeHighwaterMarkPercent" | -1 | -1 (in JWT 25) | 25 // entspricht 2 GB bei 8 GB Heap |
// configure an adaptive size management strategy with default parameters cache.setSizeManagementStrategy(new AdaptiveSizeManagementStrategy(cache)); |  |  |
|
jadice.viewer.cache.maxAgeExpiryEnabled=true |  | true | expires all entries which are older than the defined age (age = latest access) |
jadice.viewer.cache.maxAge=30 |  | 60 |
|
jadice.viewer.cache.maxAge.timeUnit=MINUTES |  | MINUTES |
|
jadice.viewer.cache.type=CompositeKeyCache | - | - | Irrelevant im JWT, da hart codiert! |
Empfehlung: Serverseitig ggf. auf LRUCache umstellen, falls man sieht, dass trotz geringer Belegung des Caches häufig aufgeräumt wird. Das macht man wie folgt:
Code Block |
---|
language | java |
---|
title | Überschreiben des Caches im ConfigurationContextListener |
---|
|
// Im WebtoolkitServerContext wurde folgendes bereits statisch vorgenommen:
// CacheManager.setDefault(DefaultCacheProvider.getDefaultServerCache());
// Das überschreiben wir hier:
LRUCache cache = new LRUCache(120000);
cache.setSizeHighwaterMark(1000 * 1024 * 1024);
CacheManager.setDefault(cache);
// ConfigurationManager.getServerConfiguration().setTileCachingEnabled(false); |