我如何调查 Microsoft.Exchange.Rpc.ClientAccess.Service.exe 持续的高 CPU 使用率?

我如何调查 Microsoft.Exchange.Rpc.ClientAccess.Service.exe 持续的高 CPU 使用率?

我们阵列中的一台 CAS 服务器的 4 个 CPU 的使用率接近 90%。其余 CAS 服务器的使用率仅为 30%。

我应该如何调查导致这种增加的原因?

下面是一个图表:

  • 六 (6) 台 CAS 服务器以 RPC/HTTPS(outlook anywhere)模式为 3,000 名用户提供服务。
  • Windows 2008 R2
  • 最近升级到 Exchange 2010 SP1 RU6(RU3 上的行为相同)
  • 每个 CAS 服务器有四 (4) 个虚拟 CPU

兴趣点

  • 由于我们要求最终用户针对不同的 URL 配置 Activesync,因此我们在负载平衡器上设置了专用 VIP,并隔离了底部的两个 CAS 服务器。这样做很容易……我们更改了公共 DNS 条目以方便隔离。(我希望 MSFT 最佳实践会鼓励为 Activesync 部署使用隔离的 URL)
  • 黑色的高 CPU 来自于 ActiveSync。
  • 绿色尖峰来自 RPC 客户端访问服务。

在此处输入图片描述

我经营着微软调试诊断在服务器上,不知道这是否是合适的工具,或者如何处理一些更高级的结果。任何提示都值得赞赏。

答案1

看看这是否有帮助:http://social.technet.microsoft.com/Forums/nl/exchange2010/thread/55da7565-abc1-4c40-bade-7d3dc420de2e。其中讨论了很多可能的原因。

答案2

我发现了根本原因并将在此更新:

CAS CPU 过高是由于

  • BES 服务器。这是零星且多变的

  • 日记。我们的归档过程使用 8000 个 MAPI 连接与服务器,导致 CPU 占用高

  • NAT 上的 Outlook 用户。许多在任何地方使用 Outlook 的人都位于 NAT 后面。我们的负载平衡器通过 IP 而不是 cookie 来平衡负载(因为 2010 sp1+ 支持它)

  • Activesync 日历问题。iPhone 不断向我们的服务器发送日历更新,但由于 Apple 的编程错误,这些更新被拒绝。我们停止了 ActiveSync 应用程序池,并更新了自动发现功能,将所有 Activesync 用户指向专用的 CAS 阵列

因此,最终的解决方案是为 Jornaling、Activesync 和 Outlook Anywhere 流量创建一个专用的 CAS 阵列。我们将 Journaling + BES 共置到同一个阵列上。这对每个服务的 QOS 和故障隔离来说都是一个糟糕的决定。

我们用来识别高 CPU 罪魁祸首的工具是“Exmon”,但要知道,运行 Exmon 会导致跟踪文件出现在 \program files(x86)\Exmon 中。如果不删除这些文件,它们可能会占满整个驱动器。

答案3

进程探索器可以帮助详细分析该过程正在做什么。

但请注意,procexp.exe 本身会占用相当多的 CPU。

答案4

您的用户是否使用 iPhone、iPad 等?
如果有,请参见下文。
我们在工作中遇到过这种情况。

http://www.networkworld.com/news/2013/021313-byod-ios-exchange-servers-266683.html iOS 设备在同步时会阻碍 Exchange 服务器

(文章内有链接) http://support.microsoft.com/kb/2814847?wa=wsignin1.0 当用户使用基于 iOS 6.1 或 6.1.1 的设备同步邮箱时,Exchange Server 2010 中的事务日志、CPU 使用率和内存消耗快速增长

相关内容