Share

15 Tips and Safeguards to Speed Up Your CRM Server

Is your CRM feeling a bit sluggish?  Are your forms and transactions not quite as snappy as they used to be?  Take a peek at this roundup of tips and safeguards to keep your CRM in the fast lane. 

#1 – Your Own Worst Enemy

You may be surprised at the amount of code or service calls occurring on your forms. Even simple customizations, if done inefficiently, can result in multiple round-trips before the user can interact with the page. Use fiddler to identify how many requests are being processed and look for multiple instances where the responses are identical. This is a sure sign that you’re due for a JavaScript refactoring (better yet, remove some altogether). Note that the same interruptions could be caused by extraneous use of the workflow or plugin engines as well. You’ll have to take an inventory and dig a bit deeper to find problems with individual components but your top level transaction analysis can help identify the problem.

One of my favorite tricks to help identify the cost of your own configuration is to create a new empty baseline organization.  Do this and run your performance metrics against it and then again against one with your configuration deployed.  All things equal, this will show you the approximate cost of your configuration.

#2 – Turbo Forms are Turbo

They don’t call them turbo forms for nothing.  You actually have to go out of your way to not take advantage of these but it merits a quick check during any performance cycle. 

Navigate over to Settings >> Administration >> System Settings >> Use legacy form rendering and check that it is set to No.

image

Note that, if this has been disabled, then someone may have had a reason to do so.  Typically, this means that you have some legacy code that is not compatible with turbo forms.

#3 – The Secret CRM Diagnostic Tool

Buried deep within your CRM is the secret CRM Diagnostic tool available only to those who know where to find it.  This is particularly useful if an individual user is having performance problems.  Have that user open the page below locally and send you the results.  A good rule of thumb is to keep latency under 150 ms.

Replace the bold section with your CRM server: https://myorg.crm.dynamics.com/tools/diagnostics/diag.aspx

image

Read more here: https://technet.microsoft.com/en-us/library/mt269872.aspx

#4 – The Double-Secret CRM Form Performance Utility

Similar to fiddler but baked right within CRM is the form performance utility. This utility will track different component load times on your CRM forms. Run this once with and once without your form scripts enabled to check your JavaScript cost. Try the same test by removing some of the sub-grids from your form to identify other efficiencies.

  1. Open a form (such as the Account form). 
  2. Hit ctrl+shift+q. 
  3. Click the enable button.
  4. Reload the form. 
  5. Hit ctrl+shift+q again.
  6. Enjoy

image

#5 – That’s the (alternate) Key!

This is a fairly recent addition. CRM allows you to define your own alternate keys for each entity. These can actually be single or composite fields if needed. They will enforce uniqueness on that field and will be automatically indexed. Navigate to your customizations section to add any relevant alternate keys. One of the best uses for this is when you have migrated data from a legacy system and are retaining the legacy key in CRM (you should see migration times improve).

image

Read more here: https://msdn.microsoft.com/en-us/library/dn932139.aspx

#6 – Client settings

It is likely that the internet browser is your users’ primary front-end for CRM.  You may want to check their browser settings (or update GP) to wring a bit more performance out of the system.

Read more here:  https://technet.microsoft.com/en-us/library/dn531125.aspx

#7 – Full Text Search

Enabling Full Text Search can have a significant improvement on the time it takes to use global search or quick find. Navigate to your system settings to find this feature under the General tab.

image

Note that this will change how searches are performed. Wildcards are no longer necessary and you can expect results to include some fuzzy matching which users typically prefer.

Read more here: https://blogs.msdn.microsoft.com/emeadcrmsupport/2015/04/17/dynamics-crm-2015-update-0-1-full-text-search-quick-find-performance-feature/

#8 – Turn High Performance Mode On

So, you want better performance? Did you consider enabling your server’s High Performance setting? Check the power options on all of your servers. These may have been set to Balanced during the OS install. Changing to High Performance will ensure that your CPU offers continuous processing power.

#9 – SSL

You’re probably aware that SSL increases the security of your site traffic by encrypting the bits over the wire but did you know that it also compresses your network traffic resulting in a net gain in performance? You do now. If you skipped this step during your initial installation, its time to open IIS and enable SSL.

Read more here: https://blogs.msdn.microsoft.com/crminthefield/2014/09/02/enable-wcf-compression-ssl-to-improve-crm-2013-network-performance/

#10 – WCF Compression

Especially for deployments using the Outlook plugin, you’re going to want to enable WCF Compression on certain types. This will reduce the amount of traffic between your CRM server and the Outlook client (or any other WCF components in your ecosystem).

Read more here: https://blogs.msdn.microsoft.com/crminthefield/2014/09/02/enable-wcf-compression-ssl-to-improve-crm-2013-network-performance/

#11 – Missing Indexes

Did you know that your SQL Server has been hard at work tracking all of your missing indexes? You do now. Periodically take a look at your missing indexes DMV to identify potential new SQL indexes.  You shouldn’t just blindly create all of these missing items, but use this as a resource to identify your biggest offenders.

Read more here: https://msdn.microsoft.com/en-us/library/ms345434.aspx

#12 – Max Degrees of Parallelism

This SQL setting controls how many parallel query plans are considered for a request. The theory behind this is that SQL can spend a little extra time up front looking for the most efficient query plan which will be offset by the efficiencies gained by taking an optimal route.  In practice, SQL will not beat the initial plan so we should tell it to not bother looking by setting this to 1.

sp_configure ‘show advanced options’, 1;

GO

RECONFIGURE WITH OVERRIDE;

GO

sp_configure ‘max degree of parallelism’, 1;

GO

RECONFIGURE WITH OVERRIDE;

GO

END

Read more here: http://msdn.microsoft.com/en-us/library/dd979074.aspx

#13 – DB Compatibility Level

You may have upgraded your SQL Server to the latest and greatest (and fastest) but did you remember to update the individual CRM database compatibility levels? This doesn’t happen by default and you may still be a few versions behind. Open up SSMS and take a peek at your DB settings to start taking advantage of the new query optimizer.

#14 – SQL Max Memory

Most DBAs will do this during your initial install but things can be missed or hardware can change over time (particularly in a virtualized environment where RAM can fluctuate on demand). Adjust your SQL max memory settings to use as much available memory as possible while still leaving a few gigs for the OS.

Read more here: https://msdn.microsoft.com/en-us/library/ms178067.aspx

#15 – Disable Tracing

You likely don’t have tracing enabled in your production environment but, if you had to troubleshoot an issue, it is possible that you had turned this on. Make sure you haven’t neglected to turn it back off.

https://technet.microsoft.com/en-us/library/hh699694.aspx


That will do it for the speedy-server checklist.  Thanks for reading!