CRMAsyncService using 100% CPU

With one of my projects I've experienced a situation in which the CRMAsyncService is requiring 99% CPU power. Since this doesn't leave much left for CRM, we needed to get this fixed. One of my colleagues, Maarten Smid, came up with the solution of installing the Service Pack 1 for .NET 3.0. But before this can be installed, some prerequisites needed to be installed.

The first step is to install Service Pack 1 for .NET 2.0:

The second step is to install Microsoft XML Paper Specification Essentials Pack (XPSEP):

And finally SP1 for .NET 3.0:


Anonymous said...

thanks for your post, it's really helpfull..

sander said...

Hey Ronald,

I have somewhat similar problems with the w3wp service. Apparently, ever since I upgraded the license for a CRM 4.0 server from Professional to Enterprise, the w3wp service is consuming a lot of processor power.

The machine with the CRM server has SP2 for .Net20 as well as .Net30.

One thing to note is that, if that XPS update is installed, the CrmAsyncService does not automatically start.


Anonymous said...


I have a similar kind of problem, my CRM server's CPU utilization is about 100% with three process in particular taking high CPU cycles. One of the process is, w3wp process, the CRM Asynch Service and the other is SqlServer process.

Also some errors are being logged in Event Viewer,which shows Database transaction being deadlocked and getting timed out by some strange process Id (generally a very low number less than 100).

The important point is that the error is recurring in nature which suggest that it is coming from a work flow (NOT from plugin) but still need to investigate more on it. The reason why I have concluded this is that even after doing an iisreset and closing all CRM logons the error in event viewer seems to continuously occur in cycles.

Please find below the log from event viewer.

Host TestServer: error while processing organization 2090008e-07e6-de11-804e-00039080bf03. Exception: System.Data.SqlClient.SqlException: Transaction (Process ID 65) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.HasMoreRows()
at System.Data.SqlClient.SqlDataReader.ReadInternal(Boolean setTimeout)
at System.Data.SqlClient.SqlDataReader.Read()
at Microsoft.Crm.Asynchronous.DataAccessBase.ExecuteSqlCommandAndProcessRecords(IDbCommand command, RecordProcessor recordProcessor)
at Microsoft.Crm.Asynchronous.QueueDataAccess.UpdateSpecialTransitions()
at Microsoft.Crm.Asynchronous.QueueManager.b__3(IQueueDataAccess queueDataAccess)
at Microsoft.Crm.Asynchronous.QueueManager.ExecuteForAllOrganizations(OrganizationQueueDataAccessHandler handler)

For more information, see Help and Support Center at

Please do let me know as I am unable to get to root cause after struggling for last 3 days or so...


Jason West said...

I think this is an easier way to deal with the problem. Though I have never been in such a problem, but I would save your blog to look for solutions whenever needed.