After recent upgrade of Sitecore implementation from Sitecore 7.2 U6 to Sitecore 8.2 initial release, we noticed slightly higher memory usage compared the Sitecore 7.2.
On further analysis based on statistics from /sitecore/admin/cache.aspx in Sitecore 8.2 instance, we noticed that while SqlDataProvider – Prefetch data cache size had considerably reduced compared to Sitecore 7.2 instance, the AccessResultCache had increased very significantly from few MB to GB.
Example – in SC 7.2 AccessResultsCache was 70 MB, and after upgrade it was 2.5 GB
We checked with Sitecore support about what we noticed. They confirmed as stated in release notes that there have been major changes in Cache implementations in SC 8.2 and also major bugs from Cache statistics has been fixed with Sitecore 8.2 and cache statistics was more accurate in Sitecore 8.2. So that also meant increase in AccessResultsCache with current version was correct behavior.
We then wanted to check how can we reduce this increased memory footprint compared to Sitecore 7.2 version. We then found thanks to this article some one else had also experienced very high AccessResultsCache (in a different version of Sitecore though). We then decided to follow one of the option mentioned in the article i.e disable Security check. While we could not do this in Content Authoring environment since we were authorization in place in access the items by Content Authors, in Content Delivery we did not had any such requirement and hence decided to disable the security for the Web Database
<database id="web"> <securityEnabled>false</securityEnabled>
Once we applied this change, we noticed a significant decrease in the AccessResultsCache size.
So after upgrade to Sitecore 8.2, if you do not have any requirement of Authorization to access Sitecore items in Content Delivery environment, then you go ahead and disable security for Web DB and optimize the memory usage.