If you start experiencing slow response times when accessing users or when logging into accounts, you might have exceeded the admin cache size, which results in the admin cache being disabled.
The admin cache is a cache maintained on each server that contains all WSUser objects that are considered to be administrators. Waveset loads this cache when the server starts up, and automatically maintains this cache by watching for WSUser object changes.
Users are generally considered administrators when they have at least one capability and control an object group. If the number of administrator users exceeds the number specified for the cache, Waveset disables the cache, which causes poor system performance.
The default size of the admin cache is 10K. If you have more than 10K administrators, Waveset does not initialize the admin cache. You can adjust this limit by changing the admincache.rowlimit property in Waveset.properties. The cost of increasing admin cache size is the additional use of heap memory. The WSUser objects in the cache consume memory for the entire lifecycle of the server.
Waveset reads the admincache.rowlimit property at server startup, so any change to this property requires the server to be restarted.
You must set this property on each server because Waveset.properties is not shared across servers.
Waveset no longer requires approvers to be administrators, as in earlier versions of the product, which potentially reduces the number of administrators in the cache and improves system performance.
Out-of-memory conditions can be difficult to troubleshoot, but you can start by ensuring that sufficient memory was initialized at start up and by checking that Waveset is tracing memory usage levels and alerts.
If you are debugging problems with the admin cache, tracing com.waveset.server.InitAdminCacheThread at level 4 can show the following information:
What were the start-up timings
How long did it take to load the admin and auth caches
What data was loaded
What happened when you added or edited a user from the Waveset Administrator interface
You can use com.waveset.server.InitAdminCacheThread to trace start-up timings. For example,
20091124 12:02:56.203 InitAdminCacheThread(0x010dae16) InitAdminCacheThread#initAdminCache() Info Getting 9 admins from admin cache took 0m0.266s 20091124 12:02:56.437 InitAdminCacheThread(0x010dae16) InitAdminCacheThread#initAdminCache() Info Loading auth cache for 9 admins took 0m0.234s
Changing admincache.rowlimit in Waveset.properties only takes affect after you restart the server. Increasing the cache size to accommodate all of the administrators in the repository may increase server performance if there is enough memory to hold the cache without resulting in excessive JVM garbage collection.
Be aware that this solution does not scale.
Available JVM heap memory is a limitation to consider when using the admincache.rowlimit property to configure cache size, particularly when implementing and tuning an x64 system.
To test your configuration,
Set admincache.rowlimit=xxxxx on VM (where xxxxx denotes the cache size setting).
Trace com.waveset.server.InitAdminCacheThread at level 4.
Review the trace file output.
Verify that the cache was loaded.
Confirm that you can disable the admincache.rowlimit setting.
Compare the machine's memory usage before and after you disable the admincache.rowlimit setting.
Ensure that the operating system has sufficient memory available to run effectively. For example, check for excess paging, CPU activity, and so forth.
Check the JVM memory usage.
Verify how long it takes the cache to load and compare this time with that of a smaller cache, such as 1000.