Need help for performance issue in CRM 2011 RRS feed

  • Question

  • Hi all

    We recently encounter performance issue in CRM 2011 On Premise: The web client is quite slow (we can feel that), and there are 100+ entries per day on the event log of web servers for event 17972 (I configure 10s for this event)

    Thus could you please give me some advice on what should be optimized or changed

    Thank you very much for your help

    Tuesday, July 7, 2015 9:25 AM

All replies

  • First thing I'd recommend is cleaning up your AsyncOperationBase table: https://support.microsoft.com/en-us/kb/968520

    The postings on this site are solely my own and do not represent or constitute Hitachi Solutions' positions, views, strategies or opinions.

    Wednesday, July 8, 2015 6:41 PM
  • Thanks Wayne.

    I do this clean up every month. But the result is still not as expected.

    Could you please give some advises in term of:

    • Hardware: If we get back to physical servers will there be performance improvement? Roughly how many percent?
    • DB: We are using SQL Server 2008 R2 Standard functions of which is limited. Should we upgrade and do partitioning? If doing so roughly how many percent the system will be faster?
    • Deployment model: Is there room for enhancement?
    • Other suggestion

    Thank you very much for your help


    Thursday, July 9, 2015 7:12 AM
  • In my experience, the only thing that really should be physicalized is the SQL server, or at least the drives running the CRM database. Ideally they should be SSDs as well.  Beyond that, just make sure that none of your virtual servers are overallocating RAM, as that can inhibit CRM's performance. Nobody is going to be able to just blanket say "x% improvement" based on what you're showing here, anyway.

    Also, I personally prefer to keep the front-end by itself, and then put the back-end and email router on the same server.

    So CRM01 would be the front-end alone, and then CRM02 would be back-end and router.  This will also ensure that none of your async processes are impacting user experience with CRM (and with an AsyncOperationBase table that large even after monthly clean-up, it definitely is now).  Then bump the front-end to 16-32GB of RAM and you're solid. Since they're virtual machines anyway, my opinion is there's little point in load balancing them when you can just allocate more resources to one server and snapshot it for uptime requirements.  After all, if the virtual enviornment goes down, you've lost access to CRM no matter what.

    SQL Standard likely isn't a performance limiter.  The only thing you're really going to get is audit log partitioning.  Useful, but not performance-critical.  You should have rules that clean out the audit logs  on some schedule anyway.

    The only other big reg flag is that your PrincipleObjectAccess table is very, very large.  That indicates to me that you all are either using Sharing as a common way to reassign entities in CRM, or you have workflows and plugins that systematically share records. That is very bad. Sharing should not be used systematically, and can have deep performance impacts on your system, as the POA table needs to be accessed regularly during the course of normal CRM work. While these recommendations are for CRM 4.0, they mostly apply to CRM 2011 as well: http://blogs.msdn.com/b/crminthefield/archive/2011/06/09/principalobjectaccess-performance-recommendations.aspx

    And here is a response to that blog with updates to CRM 2011 and how to address some of those issues: http://030bacf.netsolhost.com/WordPress/?p=1555

    So that should give you a strong starting point on what should go physical, how to redesign the front-end, and what on the database needs to be cleaned up.  Implement any of them and you will see improvement.  Implement them all and your CRM experience should dramatically improve.

    The postings on this site are solely my own and do not represent or constitute Hitachi Solutions' positions, views, strategies or opinions.

    Thursday, July 9, 2015 12:39 PM
  • Big thank Wayne.

    I will try all your advises and see the result

    My best


    Friday, July 10, 2015 11:32 AM
  • Hi Duc,

    please look at Optimizing and maintaining the performance of a Microsoft Dynamics CRM 2011 server infrastructure guide from microsoft, this has help me lot in past few projects.

    My Blog
    Follow Me on Twitter

    Monday, July 13, 2015 2:43 PM
  • Thank Mayank. 

    I will read this document again to see if I missed some configuration there

    Yet I believe what Wayne advised about AsyncOperation & POA is correct. After cleaning these tables (now 100k rows in AsyncOperation & 2 mil in POA) I can "feel" better performance. In event log there is no more #17972 regarding Account, SalesOrder, Quote, Opportunity, Lead. There are still #17972 about Activity but I think this cannot be avoided since this table itself contains 7.5 mil records

    Wednesday, July 15, 2015 6:45 AM
  • Hi Duc,

    I would also take a look at the indexes if you haven't yet, particularly for custom entities and views that you have created or system views you have modified.  There is a good but older script out there on missing indexes that talks about how to find things that SQL has been tracking. Thing to remember with these is that the maintenance of those indexes is up to you where out of the box indexes are done by the system. In my experience there are always indexes missing on some of the out of the box entities when system become larger that will help you with things like async and POA.

    Thursday, July 16, 2015 1:36 PM
  • Thank Jarrod,

    This is the result from the query of that post: https://docs.google.com/spreadsheets/d/1QH4j-AAQcKOryeTV1-5XQSCX5c7DlZrTyp3IhRIxMfg/edit?usp=sharing

    But I really don't know which of these indexes should be created to balance CRUD. Could you advise?

    Also I run DTA & BPA several times (last time was 2 months ago). Almost all suggestions of them are created.

    Thank again


    Tuesday, July 21, 2015 9:22 AM