Here are the consolidated list of the CRM 2011 Performance Improvements and Best Practices.

Category

Performance Tuning Best Practice

Improvements Area

Front End WEB Servers

Configuring HTTP Compression of WCF traffic

By using bandwidth more effectively, enabling compression can provide faster transmission times between IIS and compression-enabled browsers. If your network bandwidth is restricted, as it is, for example, with mobile phones, compression can improve performance. IIS can be configured to compress only static files, only dynamic application responses, or both static files and dynamic application responses.

Front End WEB Servers

Considerations for increasing the ephemeral TCP port limit.

Add MaxUserPort (value 65534) and TcpTimedWaitDelay (value 30)

to the registry under

HKEY_LOCAL_MACHINE\SYSTEM\

CurrentControlSet\Services\Tcpip\Parameters

In some situations, you may want to reserve a range of ports so that a program or process that requests a random port will not be assigned a port that is in the reserved range. When you reserve a range of ports, only a program or process that specifically requests a port that is in the reserved range can use the port. In rare cases there may be no free ephemeral ports available, which will cause the connection open to fail or time out. While this would be unlikely to occur on a computer running in the client tier, it is more likely to affect a computer in the application tier that is creating connections for every client request that is processed.

Front End WEB Servers

Configuring the EnableRetrieveMultipleOptimization setting

When you perform RetrieveMultiple queries on large datasets in Microsoft Dynamics CRM 2011, such as pulling together a CRM Online view, you may experience slow performance. This problem occurs because large datasets cache the Microsoft SQL query plans for the RetrieveMultiple queries. The RetrieveMultiple optimization for the basic depth is required for the "local depth" read privilege and for the "deep depth" read privilege. Set this to a value of 2 to help improve overall grid load performance.

Front End WEB Servers

Configure the Optimized values for SQL OLEDBTimeout

and ExtendedTimeout

The OLEDBTimeout value controls the SQL time-out value that is used for a single SQL query. The increased OLEDBTimeout value is useful when the SQL server is overloaded. Additionally, the query takes a longer time to process. The ExtendedTimeout value controls the ASP.NET time-out value that is used for import requests. The time-out value must be larger than the time for finishing the whole import process. The increased ExtendedTimeout value is useful when the import process takes a long time.

Front End WEB Servers

Schedule the CRM 2011 Maintenance Jobs

during the Non Business hours.

By default CRM 2011 creates 6 maintenance jobs which are scheduled to run daily. The CRM users may notice slowness or timeouts if the jobs are running while they are working in CRM. It is recommended to reschedule the jobs to a time when there there will be a limited number of users in the system to avoid impact to the users.

Back End SQL

Servers

Set degree of parallelism from 0 to 1.

This disables the parallel execution of the simultaneous operations on the SQL server.

Parallelism is the ability of SQL Server to use multiple processors to execute a single query if it determines that doing so will be the most efficient way to execute the query.

Back End SQL

Servers

Turn Read Committed Snapshot On.

READ COMMITTED isolation to minimize potential locking contention while protecting transactions from “dirty” reads of uncommitted data modifications. With dirty reads, data within the current transaction can potentially be modified by other transactions between individual statements, resulting in non-repeatable reads or phantom data.

Back End SQL

Servers

Configure the TempDB Drive and Increasing the number of TempDB data files using the SQL best practice.

Lesser pagelatch_up locks on the tempdb have improvements on the “blocking".creating additional tempdb files which are equally sized, SQL Server will automatically balance incoming requests across the multiple files. Since each file maintains its own PFS, GAM, and SGAM information, the contention will be eliminated

Back End SQL

Servers

Validate the Max/Min Memory Configuration.

Efficient usage of Memory resources between SQL Services and Operating System.

Back End SQL

Servers

Controlling Principal Object Access table growth

Principal Object Access table in CRM contains data about the users and their roles in CRM. This table has a tendency to grow which risks the performance of users in CRM having differet roles. It is recommended to clean the POA table periodically. UR6 is the best matched with POA cleaning.

Back End SQL

Servers

Re-organizing indexes and De-fragmenting indexes

Improves the table performance when the data is retrieved. Remove the additional space from the drives where index are fragmented. We are targeting the top 10 tables and then the whole DB

Back End SQL

Servers

Rebuilding indexes

Improves the table performance when the data is retrieved. We are targeting the top 10 tables and then the whole DB

Front End WEB Servers

Optimizing Microsoft .NET ThreadPool Settings

The Machine.config file modified to accommodate a specific environment. However, if each .aspx page makes a Web service call to a single IP address, it is recommended to adjust these parameters as shown below. Parameter Value

maxWorkerThreads

100

maxIoThreads

100

maxconnection

12*n (where n is the number of CPUs)

minFreeThreads

88*n

minLocalRequestFreeThreads

76*n

minWorkerThreads

50 (manually add this parameter and value to the file)

Back End SQL

Servers

Slow Performance or Large Database File in

MS CRM AsyncOperationBase

CRM records whatever it does and it is stored in the AsynOperationbase table, when the database grows so this table too. It directly impacts the performance of CRM if the data is not cleaned up periodically from this table.

Back End SQL

Servers

Weekly Statistics Job on Query Optimization for most used table or most searched indexes in SQL

Up-to-date statistics help ensure that the most appropriate index is chosen to obtain the underlying data.Currently, we run the statistics updates every week. The change is required to create a new job and run it daily in order to ensure that the most appropriate index is chosen to obtain the underlying data on the Blocking table. They also help us ensure that the correct index access mechanism is chosen

Back End SQL

Servers

SQL Jobs realignment to fit into the best time and help in connecting the dots for improvement plan

There may be times when your system is processing little data. It may be possible to reschedule some jobs to run when nothing else is happening in the system, thus reducing the opportunity for blocking.Modified the times for the SQL Jobs ensuring they do not conflict with each other. Except the replication.

References:

Controlling Principal Object Access table growth - https://support.microsoft.com/en-us/kb/2664150

Slow Performance or Large Database File in CRM ASyncOperationBase - https://support.microsoft.com/en-in/kb/968520

Schedule the CRM 2011 Maintenance Jobs - https://blogs.msdn.microsoft.com/crminthefield/2012/04/26/avoid-performance-issues-by-rescheduling-crm-2011-maintenance-jobs/

Configure the Optimized values for SQL OLEDBTimeout and ExtendedTimeout - https://support.microsoft.com/en-in/kb/918609    

Considerations for increasing the ephemeral TCP port limit - https://technet.microsoft.com/en-us/library/cc938196.aspx, https://technet.microsoft.com/en-us/library/cc938217.aspx  

Configuring the EnableRetrieveMultipleOptimization setting - https://support.microsoft.com/en-in/kb/2535245