Microsoft CRM3 - performance

Posted on 2006-07-10
Last Modified: 2013-11-24

Question:  How to make the performance of Microsoft CRM really responsive?

From my performance testing on a 15 person system:

1)  A dual processor (1GHz)  SQLServer2000 is lightly loaded (ie hardly showing anything on task manager)
2)  A seperate dual processor (1GHz) IIS6 webserver is lightly loaded (ie hardly showing anything on task manager)
3) Client machines - mine is a 1.4GHz with stacks of RAM... seems to max out the CPU when doing some CRM stuff

Our network is 100MBit/s and is lightly loaded..

Will it speed things up to have super fast desktops?

Would appreciate some real life experience..

Question by:MontySR
  • 2

Author Comment

ID: 17077808
One more thing :->

It seems as though on first page load (of the day?), there can be a 4-7 second delay.. this could be a webservice start up delay?

Anyway, after that the app really does seem usable.

Any thoughts on minimum specs of Clients, Webserver, SQL server

LVL 25

Expert Comment

ID: 17092921
Are you using the Outlook client?  Laptop or Desktop client?  How is the performance when just using the web URLs?  

The first hit will have a delay because the CRM backend is using the .NET platform, and the first hit "compiles" the .NET assemblies.  After that, they are cached, so future hits are faster.

The laptop client generally has poorer performance than the desktop client because extra services (like the Indexing Service) need to be running for it to function.


Accepted Solution

dtripp7 earned 500 total points
ID: 17095332

things i have done to speed up CRM 3.0 on our server and laptops:

- Review Administrative Tools > Services and change any unneeded services to Manual (so they do not automatically start) > stop the service

- Review items loaded in the tray and eliminate any not needed

- Reindex all the indexes in the database using the following query

1. On the Start menu, point to Programs, point to Microsoft SQL Server, and then click Query Analyzer.
2. In the Connect to SQL Server dialog box, click OK.
3. On the Query menu, click Change Database.
4. In the Select Database of <ServerName> dialog box, click the Microsoft CRM database that you want to work on, and then click OK.
5. In the Query window, type the following commands:

--Declare the variable.
DECLARE @TableName varchar(255)

--Declare the cursor.
WHERE TABLE_TYPE = 'base table'

--Open the cursor and run DBREINDEX script.
OPEN TableCursor

FETCH NEXT FROM TableCursor INTO @TableName
PRINT 'Reindexing ' + @TableName
DBCC DBREINDEX(@TableName,' ',90)
FETCH NEXT FROM TableCursor INTO @TableName

--Close and deallocate the cursor.
CLOSE TableCursor

6.  Click the Execute Query button on the toolbar, and the results show in the results pane.

Note: make sure you backup the database before running any sql query
Note: You need to update the statistics after all the indexes in a database have been defragmented or reindexed, or both

- Updating statistics on the various tables in the Microsoft CRM database enables the SQL Server Query Analyzer to choose an optimal query execution plan.  

Use the UPDATE STATISTICS command to update statistics

1. Open SQL Server Query Analyzer.
2. In the Connect to SQL Server dialog box, click OK.
3. In the Select Database of <ServerName> dialog box, click the Microsoft CRM database that you want to update, and then click OK.
4. In the Query window, type the following UPDATE STATISTICS commands:

Update Statistics QueueItemBase With FullScan
Update Statistics LeadBase With FullScan
Update Statistics ActivityBase with FullScan

5. Click the Execute Query button on the toolbar. "The command(s) completed successfully." appears in the results pane of the Query window.

Alternatively, you can also run the following script in SQL Server Query Analyzer to update the statistics and reindex every table in the database:

declare @TableName varchar(255)
declare @dbname varchar(255)
select @dbname = db_name(0)
declare @sql char (2000)
declare c cursor for
   SELECT  name FROM  sysobjects
      (xtype = 'U') AND (name NOT LIKE 'conflict%')
   ORDER BY name
   open c
   while 1=1
      fetch next from c into @TableName
      if (@@fetch_status <> 0 )
   select @sql = 'update statistics ' + @TableName + ' with fullscan'
   print @sql
   exec (@sql)
  close c
  deallocate c

This will update the statistics

- make changes to Microsoft CRM configuration

1. In Microsoft CRM, on the Home page, click the Settings tab.
2. On the Settings page, click System Customization.
3. Under Record Type Management, click Accounts.
4. In the Common Tasks area, click Set Default View.
5.  In the Default View Selector dialog box, select My Active Accounts, and then click OK.
6. When the confirmation message appears, click OK.

This will limit the number of accounts displayed.  You can also change the default number of items displayed to 25 from 50 to increase performance.  We also run the laptops in Offline mode and then synchronize which speeds up performance

There is also a Pre Cache tool but I have not tried this yet (third party development).  It is located at:

To use it, download and run:  PreCacheCRM.exe crmserver where crmserver is the name of your Microsoft CRM Webserver. (To edit the list URLs which will be cached, edit the config-file)

there are many other items that can be tuned to optimize CRM but these have helped our performance and seem fairly benign in terms of effects on the database or application - if you are interested in other optimization options, let me know


Author Comment

ID: 17096593
Many thanks dtripp7 (and dstanley9)

I'm going to test these things on our dev box next week (when it gets built again).... on a longer term basis dtripp7, yes I am very interested in CRM optimization.


Featured Post

3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction This article provides a high-level overview of the Quick Campaign and Campaign features of Microsoft CRM. The purpose of both types of campaign is to track outgoing marketing activity and customer responses in a single record. F…
Hello All, In previous article we used Hortonworks sandbox to work with Hadoop. Now, lets think to create own single node Hadoop on Linux. Here we Install and Configure Apache Hadoop on UI based Oracle Linux. I assume, you have VMware installe…
This tutorial gives a high-level tour of the interface of Marketo (a marketing automation tool to help businesses track and engage prospective customers and drive them to purchase). You will see the main areas including Marketing Activities, Design …
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…

777 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question