Amazon Elastic Compute Cloud
Windows 实例用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

对 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 用户数据字段中的以下脚本:

Copy
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 控制台获取您的实例的控制台输出,请选择该实例,单击 Actions,选择 Instance Settings,然后单击 Get System Log。要使用命令行获取控制台输出,请使用以下命令之一:get-console-output (AWS CLI) 或 Get-EC2ConsoleOutput (适用于 Windows PowerShell 的 AWS 工具)。

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

实例立即终止

在启动实例之后,建议您检查其状态,确认从 pending 状态变为 running 状态而不是 terminated 状态。

如果实例立即终止,您可以使用 Amazon EC2 控制台或命令行获取有关实例终止原因的信息。

使用控制台了解实例终止的原因

  1. 打开 Amazon EC2 控制台。

  2. 在导航窗格中,选择 Instances 以显示实例详细信息。

  3. 选择实例。

  4. Description (描述) 选项卡上,找到标签 State transition reason (状态转换原因) 旁边的原因。如果实例仍在运行,则通常不会列出原因。如果您已明确停止或终止实例,则原因为 User initiated shutdown

使用命令行了解实例终止的原因

对实例 ID 使用 describe-instances 命令 (AWS CLI)。在输出中查找 StateReason 元素。

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

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

  • 确认您使用的是正确的公有 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 防火墙,使用安全组规则来控制对实例的访问。

    在无法连接到的 Windows 实例上禁用 Windows 防火墙

    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 注册表。 如果您不熟悉注册表或不知道如何使用注册表编辑器安全地做出更改,请参阅 Microsoft TechNet

      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。

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

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

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

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

      注意

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

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

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

    10. 启动实例。

  • 确认密码没有过期。如果密码已过期,可以重置密码。有关更多信息,请参阅 重置丢失或过期的 Windows 管理员密码

  • 如果您尝试使用在实例上创建的用户账户进行连接并收到错误消息 The user cannot connect to the server due to insufficient access privileges,请确认您已为该用户授予从本地登录的权限。有关更多信息,请参阅 http://technet.microsoft.com/en-us/library/ee957044.aspx

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

RDP 显示黑屏而不是桌面

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

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

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

  • 尝试使用 RDP 客户端的默认设置。有关更多信息,请参阅 Microsoft TechNet 库 中的远程会话环境

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

    Copy
    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

实例容量不足

如果您在启动实例时看到 InsufficientInstanceCapacity 错误,则表示 AWS 当前没有足够的可用容量来服务您的请求。

尝试以下操作:

  • 等待几分钟,然后再次提交您的请求;容量可能经常转移。

  • 提交减少了实例数的新请求。例如,如果您要提交 1 个启动包含 15 个实例的请求,请改为尝试提交 3 个包含 5 个实例的请求或 15 个包含 1 个实例的请求。

  • 提交新请求而不指定可用区。

  • 使用其他实例类型 (可在后期调整大小) 提交新请求。有关更多信息,请参阅 调整您的实例大小

  • 尝试购买预留实例。预留实例是长期的容量预留。有关更多信息,请参阅 Amazon EC2 预留实例

超出实例限制

如果您在启动实例时看到 InstanceLimitExceeded 错误,这表示您已达到并行运行的实例数上限。对于新的 AWS 账户,默认限制为 20。如果需要更多运行实例,请在请求提高 Amazon EC2 实例限制上填写表单。

网络上不可用的 Windows Server 2012 R2

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