Enterprise Scalability and Performance with Microsoft Dynamics CRM 4.0

2 comments

Posted on 1st December 2008 by Jukka Niiranen in performance

,

As promised in my earlier post, here are some notes I wrote down during Convergence 2008 EMEA. In my opinion, the best session was “Enterprise Scalability and Performance with Microsoft Dynamics CRM 4.0″ held by Amir Jafri. Not so much because of the original agenda and slides, but mostly thanks to all the questions and comments from the audience. Here goes:

Database

  • SQL Server is where performance tuning gives the most “bang for the buck”
  • Creating custom indexes is supported and encouraged
  • Custom search attributes for entity Quick Find view do not automatically get indexes
  • Database index should be moved to a different disk system
  • Old customization versions are stored in the database
    • Performing many customization changes will slow the system down over time
    • Data is not and cannot be utilized in the UI, so what’s the purpose?
    • There are workarounds for cleaning the old data
  • Performance comparison of out-of-the-box setups between v3.0 and v4.0 on identical hardware show 50% reduction in CPU utilization and disk queue length
  • SQL Server 2008 will provide performance improvements for CRM out of the box

IIS

  • Disabling authentication from static content has been done in v4.0, heavily recommended for also v3.0
  • 401 error page size has been reduced, should be done manually for v3.0
  • v4.0 uses content compression to reduce the amount of data transferred
    • Compression can create an overhead on the client when rendering content
  • Image Strips(?) are used in v4.0 to reduce round trips
  • CRM default home page (my activities) round trips have been reduced by 50% between v3.0 and v4.0

Workflow

  • Common client for Windows Workflow Foundation is being developed
    • May ship with CRM v.Next
  • Workflows are still a heavy operation even in v4.0
  • Workflow performance measurement is almost impossible, due to the unlimited number of variations how workflows can be built
  • Workflow queue database table is not automatically purged of old data or indexed, should be done manually
    • Table size can grow to become so big that maintenance cannot be run, hotfix is available

Performance general notes

  • Tests done using Cisco WAAS application accelerator in WAN environment have proved to improve performance by up to 50%
  • Official toolkits for measuring the performance of an existing CRM implementation do not exist
    • Performance measurement toolkit can be used only with test data, prior to live environment deployment
  • New MOM (a.k.a. Systems Center) pack for CRM v4.0 will include CRM specific performance analysis tools
  • Outlook client improvements in v4.0:
    • Reduced memory footprint, but still quite resource intensive, also due to new requirements from Vista and Office 2007
    • CRM client start-up should no longer slow down the email data transfer upon Outlook start-up, client loads in the background

Optimizing IIS Peformance for Microsoft CRM, Part 1

0 comments

Posted on 25th September 2008 by Jukka Niiranen in performance

,

If you ever need to access the MS CRM server from a remote office with not such a speedy connection, you will notice that CRM is not a particularly light weight application. In a WAN environment where the server is located in a different country or even on a different continent as the users, this can cause some serious issues. Slow performance is a very real threat for CRM user adoption.

In an attempt to respond to the complaints of branch office users about the system usability issues caused by network latency, we have started investigating what really goes on between the CRM server and the CRM client in some of the basic use cases, such as opening CRM default front page (my activities) and opening an account form.

Loading the CRM front page without cahced data can include close to 300 different HTTP requests. To me, that sounds like an insane amount for any web page! Sure, there are various little icons on the screen and many controls to load, but still that is way over what I would expect. My personal installation of SugarCRM only takes 65 HTTP requests to give me a nice dashboard of accounts and activities. Where do all these requests originate from?

Let’s look at the individual requests that take place during a normal CRM page loading:

CRM page load HTTP requests

First you see the request for the 16_print.gif, then a while later you see the same request again. What’s up with that? Going through the list, you will notice that in practice all the items are requested twice from the application server. The first one has a result code 401, the other 200.

Welcome to the world of IIS, or more precisely version 6.0 of it. This is how content protected by integrated Windows Authentication is handled by the server. You can read some discussion on the subject from this thread: “Integrated Windows Authentication – Double Hits“. Brian Reid from C7 Solutions also covered this subject in his blog post “Improving the Performance of IIS 6.0 Applications”, where he also suggests quite an elegant solution of modifying the AuthPersistSingleRequest setting in IIS metabase. However, this being not just any in-house developed site but Microsoft CRM, a business critical application, I’m hesitant to try anything that has not been officially promoted by MS as a performance tweak. Therefore I decided to have a look at what this article had to say about IIS: Optimizing the Performance of Microsoft Dynamics CRM 3.0 White Paper. I’ll share my findings in part 2 of this post.

Switch to our mobile site