Amazon Elastic Compute Cloud
Windows 实例用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

对 Windows 实例进行故障排除

以下程序和提示可以帮助您对 Amazon EC2 Windows 实例问题进行故障排除。

如果需要其他帮助,您可以将问题发布到 Amazon EC2 forum。请务必发布实例的 ID 以及所有错误消息,包括通过控制台输出提供的错误消息。

要获取有关对实例问题进行故障排除的其他信息,请使用 使用 EC2Rescue for Windows Server。有关对 PV 驱动程序问题进行故障排除的信息,请参阅 对半虚拟化驱动程序进行故障排除

Windows 启动后,CPU 使用率短时增高

如果将 Windows Update 设置为 Check for updates but let me choose whether to download and install them (默认实例设置),则此检查可能会在实例上消耗 50 - 99% 的 CPU。如果此 CPU 消耗会导致您的应用程序出现问题,您可手动在 Control Panel 中更改 Windows Update 设置或者使用 Amazon EC2 用户数据字段中的以下脚本:

reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v AUOptions /t REG_DWORD /d 3 /f net stop wuauserv net start wuauserv

执行此脚本时,为 /d 指定一个值。默认值为 3。可能的值包括:

  • 从未检查更新

  • 检查更新,但允许我选择是否下载并安装它们

  • 下载更新,但允许我选择是否安装它们

  • 自动安装更新

为 Amazon EBS 支持的实例修改用户数据

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中,选择 Instances,然后选择实例。

  3. 依次选择 ActionsInstance StateStop

  4. 在确认对话框中,选择 Yes, Stop。停止实例可能需要几分钟时间。

  5. 在实例仍处于选中状态的情况下,选择 Actions,选择 Instance Settings,然后选择 View/Change User Data。请注意,如果实例正在运行,您不能更改用户数据,但是可以查看。

  6. View/Change User Data 对话框中,更新用户数据,然后选择 Save

在为您的实例修改用户数据后,可执行它。有关更多信息,请参阅 用户数据执行

无控制台输出

针对 Windows 实例,实例控制台会显示在实例上运行的 EC2Config 服务的输出。该输出会记录 Windows 启动期间执行的任务的状态。如果 Windows 成功启动,则最后记录的消息是 Windows is Ready to use。请注意,您也可以在控制台中显示事件日志消息,但默认情况下未启用此功能。有关更多信息,请参阅 Ec2 服务属性

要使用 Amazon EC2 控制台获取您的实例的控制台输出,请选择该实例,然后依次选择操作实例设置获取系统日志。要使用命令行获取控制台输出,请使用以下命令之一:get-console-output (AWS CLI) 或 Get-EC2ConsoleOutput (适用于 Windows PowerShell 的 AWS 工具)。

如果控制台输出是空的,说明 EC2Config 服务可能存在问题,例如,配置文件的配置不正确或 Windows 无法正确启动。要修复该问题,请下载并安装最新版本的 EC2Config。有关更多信息,请参阅 安装最新版的 EC2Config

远程桌面无法连接到远程计算机

尝试以下操作以解决与连接实例有关的问题:

  • 确认您使用的是正确的公有 DNS 主机名。(在 Amazon EC2 控制台中,请选择实例,并在详细信息窗格中查看 Public DNS (IPv4)。)如果您的实例是在 VPC 中,并且您没有看到公有 DNS 名称,则必须启用 DNS 主机名。有关更多信息,请参阅 Amazon VPC 用户指南中的在您的 VPC 中使用 DNS

  • 验证您的实例是否具有公有 IPv4 地址。如果没有,您可以将弹性 IP 地址与您的实例关联。有关更多信息,请参阅 弹性 IP 地址

  • 要使用 IPv6 地址连接到您的实例,请检查本地计算机是否具有 IPv6 地址以及是否已配置为可使用 IPv6。如果您从 Windows Server 2008 SP2 AMI 或更早版本中启动了实例,则实例不会自动配置为可识别分配给实例的 IPv6 地址。有关更多信息,请参阅 Amazon VPC 用户指南中的 在实例中配置 IPv6

  • 确认您的安全组具有允许 RDP 访问的规则。有关更多信息,请参阅 创建安全组

  • 如果您输入复制的密码,然后收到错误消息 Your credentials did not work,请尝试根据系统提示手动键入密码。可能是复制密码时丢失了字符或添加了额外空格。

  • 确认实例已通过状态检查。有关更多信息,请参阅实例的状态检查通过故障状态检查排查实例故障 (Amazon EC2 用户指南(适用于 Linux 实例))。

  • [EC2-VPC] 确认子网的路由表具有这样一个路由,该路由将发往 VPC 外部的所有流量发送到该 VPC 的 Internet 网关。有关更多信息,请参阅 Amazon VPC 用户指南 中的创建自定义路由表 (Internet 网关)。

  • 确认 Windows 防火墙或其他防火墙软件没有阻止到实例的 RDP 流量。我们建议您禁用 Windows 防火墙,使用安全组规则来控制对实例的访问。您可以使用 AWSSupport-TroubleshootRDPdisable the Windows Firewall profiles using the SSM agent。要在没有针对 SSM 配置的 Windows 实例上禁用 Windows 防火墙,请使用 AWSSupport-ExecuteEC2Rescue,或者使用以下手动步骤:

手动步骤
  1. 停止受影响的实例并分离其根卷。

  2. 在受影响的实例所在的可用区中启动临时实例。

    警告

    如果您的临时实例与原始实例基于相同的 AMI,则您必须完成额外的步骤,否则在您恢复原始实例的根卷之后,由于磁盘签名冲突,您将无法启动原始实例。或者,可以为临时实例选择不同的 AMI。例如,如果原始实例使用适用于 Windows Server 2008 R2 的 AWS Windows AMI,则使用适用于 Windows Server 2012 的 AWS Windows AMI 来启动临时实例。

  3. 将根卷从受影响的实例附加到此临时实例。连接到临时实例,打开 Disk Management (磁盘管理) 实用工具,将驱动器联机。

  4. 打开 Regedit,选择 HKEY_LOCAL_MACHINE。从 File 菜单中,选择 Load Hive。选择驱动器,打开文件 Windows\System32\config\SYSTEM,在出现提示时指定键名 (您可以使用任何名称)。

  5. 选择刚加载的键并导航至 ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy。对于名称格式为 xxxxProfile 的各个键,请选择该键并将 EnableFirewall 从 1 更改为 0。再次选择该键,在 File 菜单中,选择 Unload Hive

  6. (可选) 如果您的临时实例与原始实例基于相同的 AMI,则您必须完成以下步骤,否则在您恢复原始实例的根卷之后,由于磁盘签名冲突,您将无法启动原始实例。

    警告

    以下过程介绍了如何使用注册表编辑器编辑 Windows 注册表。 如果您不熟悉 Windows 注册表或不知道如何使用注册表编辑器安全地做出更改,请参阅配置注册表

    1. 打开命令提示,键入 regedit.exe,并按“Enter”键。

    2. 注册表编辑器中,从上下文菜单中选择 HKEY_LOCAL_MACHINE(右击),然后选择“查找”

    3. 键入 Windows Boot Manager,然后选择“查找下一个”

    4. 选择名为 11000001 的密钥。此密钥与您在之前步骤中找到的密钥处于同一层级。

    5. 在右侧窗格中,选择 Element,然后从上下文菜单 (单击右键) 中选择 Modify

    6. 在数据中的偏移 0x38 处查找四字节磁盘签名。颠倒这些字节以创建磁盘签名并将其记下。例如,由以下数据表示的磁盘签名为 E9EB3AA5

      ... 0030 00 00 00 00 01 00 00 00 0038 A5 3A EB E9 00 00 00 00 0040 00 00 00 00 00 00 00 00 ...
    7. 在命令提示符窗口中,运行以下命令以启动 Microsoft DiskPart。

      diskpart
    8. 运行以下 DiskPart 命令以选择卷。(您可以使用 Disk Management (磁盘管理) 实用工具来验证磁盘编号为 1。)

      DISKPART> select disk 1 Disk 1 is now the selected disk.
    9. 运行以下 DiskPart 命令以获取磁盘签名。

      DISKPART> uniqueid disk Disk ID: 0C764FA8
    10. 如果上一步骤中显示的磁盘签名与前面记下的 BCD 中的磁盘签名不匹配,请使用以下 DiskPart 命令更改磁盘签名以使其匹配:

      DISKPART> uniqueid disk id=E9EB3AA5
  7. 使用 Disk Management (磁盘管理) 实用工具,将驱动器脱机。

    注意

    如果临时实例运行的操作系统与受影响实例相同,则驱动器将自动脱机,因此您无需手动使其脱机。

  8. 将该卷从临时实例分离。如果您不再使用临时实例,则可以将其终止。

  9. 通过将受影响的实例的根卷附加为 /dev/sda1 将其还原。

  10. 启动实例。

  • 如果您尝试使用在实例上创建的用户账户进行连接并收到错误消息 The user cannot connect to the server due to insufficient access privileges,请确认您已为该用户授予从本地登录的权限。有关更多信息,请参阅向成员授予本地登录权限

  • 如果尝试次数超过所允许的并发 RDP 会话的最大数目,则会终止会话,并显示消息 Your Remote Desktop Services session has ended. Another user connected to the remote computer, so your connection was lost.。默认情况下,实例可以有两个并发 RDP 会话。

使用 macOS RDP 客户端时出错

如果您使用 Microsoft 网站的远程桌面连接客户端连接到 Windows Server 2012 R2 实例,则可能会收到以下错误:

Remote Desktop Connection cannot verify the identity of the computer that you want to connect to.

从 Apple iTunes 存储下载 Microsoft 远程桌面应用程序,然后使用该应用程序连接到实例。

RDP 显示黑屏而不是桌面

请尝试以下操作解决该问题:

  • 检查控制台输出有无其他信息。要使用 Amazon EC2 控制台获取您的实例的控制台输出,请选择该实例,然后依次选择 ActionsInstance SettingsGet System Log

  • 确认您正在运行最新版本的 RDP 客户端。

  • 尝试使用 RDP 客户端的默认设置。有关更多信息,请参阅删除会话环境

  • 如果您要使用远程桌面连接,请尝试使用 /admin 选项,通过以下方式将其启动。

    mstsc /v:instance /admin
  • 如果服务器正在运行全屏应用程序,则它可能会停止响应。使用 Ctrl+Shift+Esc 以启动 Windows 任务管理器,然后关闭应用程序。

  • 如果过度使用服务器,则服务器可能已停止响应。要使用 Amazon EC2 控制台来监控实例,请选择实例,然后选择 Monitoring (监控) 选项卡。如果需要将实例类型更改为更大大小,请参阅更改实例类型

实例失去网络连接或计划的任务不按预期方式运行

如果您重新启动实例而该实例失去网络连接,则可能该实例的时间不正确。

默认情况下,Windows 实例使用协调世界时 (UTC)。如果将实例的时间设置为不同的时区,然后再重新启动实例,则时间会发生偏移,该实例暂时失去其 IP 地址。实例最终会重新获取网络连接,但这可能要用数小时的时间。实例重新获取网络连接所用的时间取决于 UTC 与其他时区之间的差异。

这种时间问题也可能导致计划的任务不如期运行。在这种情况下,计划的任务会因实例的时间不正确而不如期运行。

要持久使用 UTC 以外的时区,您必须设置 RealTimeIsUniversal 注册表项。若不设置此项,则实例会在重新启动后使用 UTC。

解决造成网络连接丢失的时间问题

  1. 确保所运行的是建议的半虚拟化驱动程序。有关更多信息,请参阅 在 Windows 实例上升级半虚拟化驱动程序

  2. 验证以下注册表项存在并且已设置为 1HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal

网络上不可用的 Windows Server 2012 R2

有关对网络上不可用的 Windows Server 2012 R2 实例进行故障排除的信息,请参阅 Windows Server 2012 R2 在实例重启后丢失网络和存储连接

使用 AWS Systems Manager 排查远程桌面连接问题

AWSSupport-TroubleshootRDP

利用 AWSSupport-TroubleshootRDP 自动化文档,用户可以检查或修改目标实例上可影响远程桌面协议 (RDP) 连接的常规设置,如 RDP 端口网络层身份验证 (NLA)Windows 防火墙配置文件。默认情况下,此文档读取和输出这些设置的值。

AWSSupport-TroubleshootRDP 自动化文档只能用于为 AWS Systems Manager 启用的实例(也称为托管实例)。您的实例必须已安装 SSM 代理并且已将具有权限的 IAM 角色附加到 Systems Manager。您必须更改默认参数值才能修改目标实例上的常用 RDP 设置。

  1. 登录 Systems Manager 控制台

  2. 确认您与受损实例位于同一区域。

  3. 打开 AWSSupport-TroubleshootRDP 文档。

  4. Execution Mode (执行模式) 中,选择 Execute the entire automation at once (一次执行整个自动化)

  5. Input parameters (输入参数)InstanceId 字段中,启用 Show interactive instance picker (显示交互式实例选取器)

  6. 选择您的 Amazon EC2 实例。注意:如果您未在列表中看到您的实例,这表明它还未启用 Systems Manager。如要为 SSM 代理配置 AWS Identity and Access Management (IAM),请参阅为 Systems Manager 创建实例配置文件

  7. 检查示例,然后选择 Execute automation (执行自动化)

  8. 要监控执行进度,请在 Execution (执行) 状态中,等待状态从 Pending (待处理) 变为 Success (成功)。 展开 Outputs (输出) 以查看结果。要查看各个步骤的输出,请在 Executed Steps (执行步骤) 中,选择 Step ID (步骤 ID)

示例

下面的示例说明如何使用 AWSSupport-TroubleshootRDP 完成常见的问题排查任务。确保使用您自己的值替换了 INSTANCEIDREGION

检查当前 RDP 状态

AWS CLI:

aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=INSTANCEID" --region REGION

AWS Systems Manager 控制台深层链接:

https://console.amazonaws.cn/systems-manager/automation/execute/AWSSupport-TroubleshootRDP?region=REGION#documentVersion=$LATEST

禁用 Windows 防火墙

AWS CLI:

aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=INSTANCEID,Firewall=Disable" --region REGION

AWS Systems Manager 控制台深层链接:

https://console.amazonaws.cn/systems-manager/automation/execute/AWSSupport-TroubleshootRDP?region=REGION#documentVersion=$LATEST&Firewall=Disable

禁用网络级身份验证

AWS CLI:

aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=INSTANCEID,NLASettingAction

AWS Systems Manager 控制台深层链接:

https://console.amazonaws.cn/systems-manager/automation/execute/AWSSupport-TroubleshootRDP?region=REGION#documentVersion

将 RDP 服务启动类型设置为自动并启动 RDP 服务

AWS CLI:

aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=INSTANCEID,RDPServiceStartupType=Auto, RDPServiceAction=Start" --region REGION

AWS Systems Manager 控制台深层链接:

https://console.amazonaws.cn/systems-manager/automation/execute/AWSSupport-TroubleshootRDP?region=REGION#documentVersion=$LATEST&RDPServiceStartupType=Auto&RDPServiceAction=Start

恢复默认 RDP 端口 (3389)

AWS CLI:

aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=INSTANCEID,RDPPortAction=Modify" --region REGION

AWS Systems Manager 控制台深层链接:

https://console.amazonaws.cn/systems-manager/automation/execute/AWSSupport-TroubleshootRDP?region=REGION#documentVersion=$LATEST&RDPPortAction=Modify

允许远程连接

AWS CLI:

aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=INSTANCEID,RemoteConnections=Enable" --region REGION

AWS Systems Manager 控制台深层链接:

https://console.amazonaws.cn/systems-manager/automation/execute/AWSSupport-TroubleshootRDP?region=REGION#documentVersion=$LATEST&RemoteConnections=Enable

AWSSupport-ExecuteEC2Rescue

AWSSupport-ExecuteEC2Rescue 自动化文档使用 使用 EC2Rescue for Windows Server 自动排查并修复 EC2 实例连接和 RDP 问题。有关更多信息,请参阅在无法访问的实例上运行 EC2Rescue 工具

注意

AWSSupport-ExecuteEC2Rescue 自动化文档可在任何 Amazon EC2 实例上使用,但它需要停止并重新启动实例。Systems Manager 自动化将停止实例并创建 Amazon 系统映像 (AMI)。实例存储卷上存储的数据将丢失。如果您未使用弹性 IP,则公有 IP 地址将发生更改。有关更多信息,请参阅在无法访问的实例上运行 EC2Rescue 工具

  1. 打开 Systems Manager 控制台

  2. 确认您与受损 Amazon EC2 实例位于同一区域。

  3. 打开 AWSSupport-ExecuteEC2Rescue 文档。

  4. Execution Mode (执行模式) 中,选择 Execute the entire automation at once (一次执行整个自动化)

  5. Input parameters (输入参数) 部分的 UnreachableInstanceId 中,输入无法访问的实例的 Amazon EC2 实例 ID。

  6. (可选)对于 LogDestination,请输入 Amazon Simple Storage Service (Amazon S3) 存储桶名称(如果需要收集操作系统日志以便排查 Amazon EC2 实例问题)。 日志会自动上传到此指定存储桶。

  7. 选择执行自动化

  8. 要监控执行进度,请在 Execution (执行) 状态中,等待状态从 Pending (待处理) 变为 Success (成功)。 展开 Outputs (输出) 以查看结果。要查看各个步骤的输出,请在 Executed Steps (执行步骤) 中,选择 Step ID (步骤 ID)