High CPU usage when you synchronize a mobile device to an Exchange Server CAS
- You configure a server to run Microsoft Exchange Server 2003, Microsoft Exchange Server 2007, or Microsoft Exchange Server 2010.
- The server that is running Microsoft Exchange Server has the Client Access Server (CAS) role.
- You try to synchronize a mobile device.
Note On a server that is running Exchange Server 2003, the processing occurs on the back-end server. Therefore, the W3wp.exe process that runs under the ExchangeApplicationPool application pool on the back-end server may use the CPU time. Additionally, you may experience rapid transaction log growth.
Note This synchronization request is frequently an unexpected POST of all the contacts that are on the mobile device. Exchange Server tries to validate the XML schema for each node for all the contacts. This may cause multiple memory allocations and excessive Microsoft .NET garbage collection.
- Identify the users and devices that are causing the high CPU usage. To do this, follow these steps:
- Collect the Internet Information Services (IIS) logs.
- Use the following Log Parser Studio query to identify the problem users and devices:Note If a request takes longer than the IIS time-out to complete, the request is dropped and is not displayed in the IIS log.
/* Find Device/User Info for 100% CPU while syncing contacts */Select TOP 5000 TO_TIMESTAMP(TO_DATE(date), TO_TIME(time)) as [Time],cs-username as [User],cs(user-agent) as DeviceID,TO_INT(EXTRACT_PREFIX(EXTRACT_SUFFIX(cs-uri-query, 0, '_RpcC'), 0, '_')) As RPCCount,sc-status as Status,sc-substatus as SubStatus,sc-bytes as [Bytes],DIV(sc-bytes, 1024) AS [KBytes], time-taken, DIV(time-taken, 1000) as Sec, cs-uri-queryFROM '[LOGFILEPATH]'WHERE RPCCount > 2000 /* <-- Change RPC count as needed */AND cs-uri-query LIKE '%Cmd=Sync%' AND cs-uri-query LIKE '%Ty:Co%'ORDER BY [Bytes] DESC
Note Typically, the problem users have RPC counts over 2,000. These RPC counts frequently repeat at set intervals.
- Inspect the returned data to identify high RPC count patterns for users and then match those users to users who have high contact item counts.
- Test the issue again. To do this, follow these steps:
- Temporarily disable a user from synchronization.
- Recycle the MSExchangeSyncAppPool.
- After you identify the problem users and devices, do one of the following:
- Disable the synchronization of the Contacts folder on the device.
- Block the problem devices at the firewall by using the User-Agent string.
- Block users on a per-user basis.
- Reduce the number of contacts in the Contact folder for a user.
- Recycle the ActiveSync application pool every 30 minutes.
Note We do not recommend that you recycle the ActiveSync application pool every 30 minutes in a production environment.
- If the server is running Exchange Server 2010, change the Throttling Policy that is applied to the user. To do this, run the following cmdlet:Set-ThrottlingPolicy <ThrottlingPolicyName> -EASPercentTimeInCAS 30Notes
- The Throttling Policy can be the Default Policy or a policy that is assigned to the user.
- The default value for EASPercentTimeInCAS is 100. A lower setting may be required to work around this issue. We recommend a starting value of 30. However, the most effective setting depends on the environment. We recommend that you thoroughly test each setting. If the EASPercentTimeInCAS value is incorrect, the devices that are causing the issue may be affected.
- Download and install the ProcDump utility. For more information about the ProcDump utility, visit the following TechNet website:
- Click Start, type cmd in the Search programs and files box, and then press Enter.
- At the command prompt, type the following command, and then press Enter:C:\Windows\System32\InetSrv and run appcmd list wpNote This command retrieves the Process ID (PID) of the MSExchangeSyncAppPool.
- At the command prompt, type the following command where PID is the Process ID that was returned in step 2:procdump -ma [pidOfSyncAppPool] -c 90 -n 3 -s 5 -accepteula c:\temp\andy\w3wp.dmp
- Repeat steps 1 through 4 at least three times, and then contact CTS.
When a request is dropped because the request takes longer than the IIS time-out to complete, an error message is displayed in the HTTP API error log. This error message resembles the following:
2012-04-04 12:54:27 10.28.43.202 53544 192.168.0.10 443 HTTP/1.1 POST /Microsoft-Server-ActiveSync?User=USER&DeviceId=DEVICEID&DeviceType=DEVICETYPE&Cmd=Sync - 1 Timer_EntityBody MSExchangeSyncAppPool
2012-04-04 14:54:15 10.28.43.202 53643 220.127.116.11 443 HTTP/1.1 POST /Microsoft-Server-ActiveSync?User=USER&DeviceId= DEVIDEID&DeviceType=DEVICETYPE&Cmd=Sync - 1 Connection_Abandoned_By_ReqQueue MSExchangeSyncAppPool
For more information about Log Parser Studio, visit the following TechNet website:
Article ID: 2711053 - Last Review: 05/16/2014 07:04:00 - Revision: 7.0
- kbsurveynew kbprb kbtshoot KB2711053