We're currently doing some performance optomisation of our Sitecore 8.1 Website and one of the slowest operations were seeing in New Relic is AcquireRequestState.
I've read around this quite a bit about it (e.g https://discuss.newrelic.com/t/digging-into-the-acquirerequeststate-event/40468) and know that ASP.NET can cause Session Locking and wait for the request to complete before it releases the lock. This can cause significant slowdowns on page load.
I've also read a few Sitecore related articles on this (e.g: https://blog.wesleylomax.co.uk/2015/10/08/sitecore-8-ajax-controller-blocking/) and it looks like it should be possible to disable session on a per Controller basis using:
[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]
New Relic and the article above though suggest that some of Sitecores default controllers can potentially be causing this and not our custom ones.
Has anyone else seen this issue and did you implement this for your custom controllers or patch any out of the box Sitecore controllers?
Further info:
- Sitecore 8.1 Update 2 MVC
- 3 front end CD servers (Load Balanced)
- Session stored out of process in SQL Database