

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 疑难解答 Amazon 托管微软 AD CPU 利用率过高
<a name="ms_ad_troubleshooting_high_cpu"></a>

以下内容可以帮助你解决 Amazon 托管 Microsoft AD 域控制器上的 CPU 过高问题。

## 寻找根本原因
<a name="ms_ad_high_cpu_root_cause"></a>

排除高 CPU 使用率问题的第一步是分析 CloudWatch 指标，找出可能解释资源消耗增加的模式。

### 步骤 1：查看 Amazon Directory Service CloudWatch 指标
<a name="ms_ad_high_cpu_step1"></a>

使用 CloudWatch 指标监控您的 Amazon 托管 Microsoft AD 性能，以识别与高 CPU 使用率相关的流量模式。有关查看和解释 Amazon Directory Service 指标的详细信息，请参阅[CloudWatch 用于监控您的 Amazon 托管 Microsoft AD 域控制器的性能](ms_ad_monitor_dc_performance.md)。

在以下可能解释 CPU 增长的关键指标中寻找变化模式：
+ **每秒 DNS 查询**次数 — 突然出现峰值可能表示 DNS 解析问题或应用程序配置错误。
+ **Kerberos/ntlm 身份验证** — 来自用户登录或服务帐户的身份验证率更高。
+ **每秒 LDAP 查询**次数 — 来自应用程序或服务的 LDAP 流量增加。

将当前指标与历史基准进行比较，以确定高 CPU 利用率何时开始，并将其与特定的流量增长相关联。如果在指标中找不到相关性，则根本原因不是流量大幅增加。相反，根本原因可能是 LDAP 查询效率低下，请跳至。[步骤 3：使用流量镜像捕获详细的流量分析](#ms_ad_high_cpu_step3)

### 步骤 2：使用 VPC 流日志识别源计算机
<a name="ms_ad_high_cpu_step2"></a>

VPC 流日志提供了一种有效的方法来识别向您的域控制器生成流量的计算机的源 IP 地址。有关更多信息，请参阅[使用 VPC 流日志记录 IP 流量](https://docs.amazonaws.cn/vpc/latest/userguide/flow-logs.html)。使用目标端口号来区分服务：
+ **端口 53** — DNS 查询
+ **端口 88** — Kerberos 身份验证
+ **端口 123** — NTP 时钟同步
+ **端口 135、49152-** 65535 — RPC
+ **端口 389、636、3268、3269 — LDAP 查询（标准 LDAP 为 389 或 326** 8，LDAPS 为 636 或 3269）
+ **端口 445** — SMB 文件共享（组策略）
+ **端口 464** — Kerberos 密码更改
+ **端口 9389** — 活动目录网络服务

要启用和分析 VPC 流日志，请执行以下操作：
+ 为包含您的域控制 ENIs器的子网启用 VPC 流日志。
+ 按目标端口筛选日志以识别流量模式。
+ 按 and/or 大多数数据包整理一段时间内的大多数字节。
+ 分析源 IP 地址以确定哪些计算机产生的流量最多。

### 步骤 3：使用流量镜像捕获详细的流量分析
<a name="ms_ad_high_cpu_step3"></a>

VPC 流日志提供的有关请求实际内容的有限信息。要进行更详细的分析，请考虑使用流量镜像来捕获完整的数据包数据。有关更多信息，请参阅[开始使用流量镜像监控网络流量](https://docs.amazonaws.cn/vpc/latest/mirroring/traffic-mirroring-getting-started.html)。当你需要分析以下内容时，这特别有用：
+ LDAP 过滤器的复杂性和效率
+ 特定的 DNS 查询模式
+ 身份验证请求详情

流量镜像允许您捕获发送到域控制器实例的完整网络数据包，从而可以对导致 CPU 使用率高的流量进行深入分析。

### 步骤 4：调查源应用程序并优化流量
<a name="ms_ad_high_cpu_step4"></a>

确定源计算机和流量模式后，请调查生成流量的应用程序：
+ **查看应用程序配置**-检查应用程序是否在进行低效查询或请求过多。避免将应用程序硬编码到单个域控制器。
+ **分析 LDAP 查询** — LDAP 查询效率低下是导致域控制器 CPU 过高的最常见原因。寻找可以从属性索引中受益的复杂过滤器。
+ **检查 DNS 缓存**-验证是否已启用 DNS 客户端缓存以减少重复查询。
+ **检查身份验证模式**-确定服务帐户是否过于频繁地进行身份验证。

## 解决策略
<a name="ms_ad_high_cpu_resolution"></a>

根据您的调查，实施适当的优化策略：

### 优化应用程序
<a name="ms_ad_high_cpu_optimize_apps"></a>
+ **优化 LDAP 查询**-重写复杂的 LDAP 查询。避免将搜索库设置为域的根目录，而应将其配置为要搜索的对象所在的 OU。避免使用执行子树搜索的搜索范围。而是使用基本或单级示波器。在过滤器中加入对象类。例如，`(objectClass=user)` 或 `(objectClass=computer)`。除非已为属性编制索引，否则请避免在过滤器中使用通配符。如果需要通配符扫描，请添加索引。有关更多信息，请参阅 [扩展你的 Amazon 托管微软 AD 架构](ms_ad_schema_extensions.md)。不要索引所有内容，因为索引过程还会增加 CPU 利用率。

  ```
  # Sample LDIF code to index the email attribute
  dn: CN=mail,CN=Schema,CN=Configuration,DC=yourdomain,DC=com
  changetype: modify
  replace: searchFlags
  searchFlags: 1
  ```
+ **启用 DNS 客户端缓存**-将客户端配置为在本地缓存 DNS 响应以减少服务器负载。
+ **实现连接池**-将应用程序配置为重复使用 LDAP 连接，而不是为每个查询创建新连接。

### 扩展您的目录基础架构
<a name="ms_ad_high_cpu_scale"></a>

如果流量优化不能解决 CPU 使用率过高的问题：
+ **添加更多域控制器**-通过部署其他域控制器来分散负载，实现横向扩展。有关更多信息，请参阅 [为你的 Amazon 托管 Microsoft AD 部署额外的域控制器](ms_ad_deploy_additional_dcs.md)。
+ **升级到企业版**-如果使用标准版，请升级到企业版以提高 CPU 容量和性能。有关更多信息，请参阅 [升级你的 Amazon 托管 Microsoft AD](ms_ad_upgrade_edition.md)。如果已经在使用企业版，请联系[Amazon Web Services 支持](https://docs.amazonaws.cn//awssupport/latest/user/case-management.html)以增加容量。

有关 Amazon 托管 Microsoft AD 版本的定价信息，请参阅[Amazon Directory Service 定价](https://www.amazonaws.cn/directoryservice/pricing/#Comparison_Table)。