跳至内容

如何解决 Application Migration Service 中 Windows 源服务器的复制滞后或积压问题?

3 分钟阅读
0

使用 AWS Application Migration Service 复制数据时,我发现 Windows 源服务器出现滞后或积压。

简短描述

由于以下原因,您在复制数据时会遇到滞后和积压问题:

  • 网络连接速度缓慢导致复制过程无法完成,或者您的带宽限制了可复制的数据量。
  • 新磁盘数据的大幅激增导致了积压,AWS Replication Agent 必须在初始同步时发送这些积压。
  • 源服务器磁盘的高读取延迟拖慢了磁盘复制速度。
  • CPU、内存、I/O 等待或其他资源使用率过高导致复制瓶颈。
  • 您选择的 Amazon Elastic Block Store (Amazon EBS) 暂存卷的吞吐量或每秒进行读写操作的次数 (IOPS) 较低,且服务器的网络带宽有限。这会导致复制期间出现延迟和性能问题。

解决方法

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

检查源服务器

验证源服务器状态

确保准备进行迁移的源服务器已启动并且正在运行。

验证 AWS Replication Agent 进程是否正在运行

要列出正在运行的 AWS Replication Agent 服务,请从 PowerShell 运行以下命令:

get-service | where-object name -like "*AWSR*"

在输出中,验证 AWSReplicationService 是否为 Running(正在运行)。

输出示例:

PS C:\Users\Administrator> get-service | where-object name -like "*AWSR*"

Status   Name               DisplayName
------   ----               -----------
Running  AwsReplicationD... AwsReplicationDriverLogger
Running  AwsReplicationL... AwsReplicationLogger
Stopped  AwsReplicationP... AwsReplicationPostConvertService
Running  AwsReplicationS... AwsReplicationService
Running  AwsReplicationV... AwsReplicationVolumeUpdaterService

或者,按 Windows + R,然后输入 services.msc。按 Enter,然后验证 AWSReplicationService 是否为 Running(正在运行)。

验证活动 TCP 连接

验证在 TCP 端口 1500 上是否与复制服务器建立了五个活动 TCP 连接。

要检查 TCP 端口 1500,请以管理员身份运行以下命令:

netstat -an | find "1500"

检查命令输出中是否有活动连接。

输出示例:

TCP    172.31.82.135:50929    Replicator Instance IP:1500    ESTABLISHED
TCP    172.31.82.135:50930    Replicator Instance IP:1500    ESTABLISHED
TCP    172.31.82.135:50931    Replicator Instance IP:1500    ESTABLISHED
TCP    172.31.82.135:50933    Replicator Instance IP:1500    ESTABLISHED
TCP    172.31.82.135:50934    Replicator Instance IP:1500    ESTABLISHED

使用 Windows 资源监视器检查源服务器的性能

AWS Replication Agent 一次只能在一个 CPU 内核上运行。如果运行 AWS Replication Agent 的内核的 CPU 使用率很高,则数据复制会很慢。要检查您的 CPU 使用率,请完成以下步骤:

  1. 打开“任务管理器”,然后选择 Performance(性能)选项卡。然后,选择 Open Resource Monitor(打开资源监视器)。
    -或-
    打开“控制面板”,然后选择 Administrative Tools(管理工具)。然后,选择 Resource Monitor(资源监视器)。
    -或-
    从命令行或 PowerShell 运行 resmon.exe
    -或
    选择 Windows 图标,然后输入 resmon.exe
  2. 检查运行 AWS Replication Agent 的 CPU 内核的 CPU 使用率。
    如果该内核的 CPU 使用率很高,请调查占用 CPU 最多的进程。如果代理使用至少 5% 的 CPU,请验证是否有足够的 CPU 可供代理执行数据复制操作。
  3. 检查源服务器的磁盘性能。在 Disk Activity(磁盘活动)下,检查 Write (B/sec)(写入(B/秒))和 Response Time(响应时间)指标。
    如果源磁盘上的读取吞吐量低,则代理读取和复制的数据会减少。请注意磁盘读取和磁盘写入指标的任何增加。
    **注意:**通过 TCP 端口 1500 传输复制数据所需的带宽取决于参与复制的源服务器的写入速度。最佳做法是让带宽至少等于所有复制的源计算机的平均写入速度之和。
  4. 检查源服务器的写入操作是否有峰值。在 Disk Activity(磁盘活动)下,检查 Write (B/sec)(写入(B/秒))指标。
    随着工作负载的变化,请定期检查磁盘性能以确定 I/O 负载。如果写入吞吐量超过提供的网络吞吐量,则会出现复制滞后。
  5. (可选)计算从源服务器到复制服务器所需的带宽
    **注意:**如果您的源服务器写入量很大,且写入速度超过复制速度,则积压会继续增加。

检查从源服务器到暂存区域子网的复制速度和可用带宽

有关如何运行速度测试的信息,请参阅 How can I perform an SSL connectivity and bandwidth test?(如何执行 SSL 连接和带宽测试?)

检查是否有不正常关闭的源服务器

如果源服务器不正常关闭,AWS Replication Agent 会在服务器重启后重新扫描所有磁盘。随着 AWS Replication Agent 重新读取磁盘,滞后会持续增加,直到代理完成扫描。有关详细信息,请参阅 Which Windows and Linux OSs support no-rescan upon reboot?(哪些 Windows 和 Linux 操作系统支持重启后不重新扫描?)

要检查源计算机是如何关闭的,请完成以下步骤:

  1. Windows + R,然后输入 eventvwr.msc
  2. Enter
  3. 在导航窗格中,双击 Windows Logs(Windows 日志)以展开选项。
  4. 打开 System(系统)的上下文(右键单击)菜单。
  5. 选择 Filter Current Log(筛选当前日志)。
  6. 选择 Event sources(事件源)向下箭头,然后选择 USER32
  7. 对于 All Event IDs(所有事件 ID),输入 1074,然后选择 OK(确定)。现在,Event Viewer(事件查看器)将显示关机(关闭)和重启 Shutdown Type(关闭类型)事件的列表。
  8. 要查看所有计算机意外关闭的日期和时间,请在 All Event IDs(所有事件 ID)字段中输入 6008,然后选择 OK(确定)。

确认您未阻止出站 TCP 端口 1500 流量

要确认从源服务器到复制服务器的出站 TCP 端口 1500 流量未被阻止,请运行以下命令之一:

从 CMD 运行以下命令:

telnet replication-subnet-IP-address 1500

从 PowerShell 运行以下命令:

TNC replication-subnet-IP-address -port 1500

**注意:**请将 replication-subnet-IP-address 替换为您的复制器实例的 IP 地址。

确保您的本地防火墙允许通过 TCP 端口 443 从源服务器连接到复制服务器。要在操作系统 (OS) 防火墙上激活连接,请完成以下步骤:

  1. 在源服务器上,打开 Windows 防火墙控制台。
  2. 选择 Outbound Rules(出站规则)。
  3. Outbound Rules(出站规则)表中,选择与远程端口 1500 连接相关的规则。验证 Enabled(启用)状态是否设置为 Yes(是)。
  4. 如果规则的 Enabled(启用)状态为 No(否),请打开该规则的上下文(右键单击)菜单。然后,选择 Enable Rule(启用规则)。

确保您的公司防火墙允许通过 TCP 端口 1500 的流量。

验证源服务器上复制设置中的带宽限制是否已停用

在源服务器上停用带宽限制以保留足够的带宽,以便将数据从源服务器传输到暂存区域子网。带宽限制会导致持续或停滞的滞后增加,因为它会限制从源服务器到复制服务器的数据复制。

要检查带宽限制,请完成以下步骤:

  1. 打开 Application Migration Service 控制台
  2. 选择 Settings(设置)。
  3. Data routing and throttling(数据路由和限制)下,选择复制模板。
  4. 选择 Do not throttle bandwidth(不限制带宽),以允许复制使用全部可用网络容量,从而缩短迁移时间。
    **注意:**当您选择 Throttle bandwidth(限制带宽)时,Application Migration Service 会人为地限制数据传输速度。这会形成一个瓶颈,从而拖慢复制过程。仅当您需要限制网络使用以控制成本或保护其他关键应用程序的资源时,才选择此选项。

检查暂存区域资源

确认入站 TCP 端口 1500 流量未被阻止

要确认复制服务器安全组未阻止入站 TCP 端口 1500 流量,请完成以下步骤:

  1. 打开 Amazon Elastic Compute Cloud (Amazon EC2) 控制台
  2. 在导航窗格中,选择 Security groups(安全组),然后选择附加到复制器实例的安全组。
  3. 验证安全组是否允许入站 TCP 端口 1500 流量。

分析您的暂存资源

检查复制实例和暂存磁盘配置是否存在性能瓶颈

检查目标区域的快照配额

确保您的 AWS 账户未超过复制服务器所在 AWS 区域的快照配额。

要检查该区域的快照配额,请运行以下 get-service-quota AWS CLI 命令:

aws service-quotas get-service-quota --service-code ebs --quota-code L-309BACF6 --region regionexample --query "Quota.Value"  

**注意:**请将 regionexample 替换为您的区域。

然后,运行以下 describe-snapshots 命令,以检查该区域中的快照:

aws ec2 describe-snapshots --owner-ids self --region regionexample --query "length(Snapshots)"

**注意:**请将 regionexample 替换为您的区域。