

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

# `AWSSupport-TroubleshootWindowsPerformance`
<a name="awssupport-troubleshoot-windows-performance"></a>

 **描述** 

 该运行手册`AWSSupport-TroubleshootWindowsPerformance`有助于解决亚马逊弹性计算云 (Amazon EC2) Windows 实例上持续存在的性能问题。运行手册从目标实例捕获日志，并分析 CPU、内存、磁盘和网络性能指标。或者，自动化可以捕获进程转储，以帮助您确定性能下降的潜在原因。如果您允许安装此运行手册，则自动化还会使用最新的[https://docs.aws.amazon.com//AWSEC2/latest/WindowsGuide/Windows-Server-EC2Rescue.html](https://docs.aws.amazon.com//AWSEC2/latest/WindowsGuide/Windows-Server-EC2Rescue.html)工具捕获事件和系统日志。

 **如何工作？** 

 运行手册执行以下步骤：
+ 检查 Amazon EC2 实例的先决条件。
+ 在 Amazon EC2 Windows 实例的根磁盘中生成性能日志
+ 将捕获的日志存储在文件夹中 `C:\ProgramData\Amazon\SSM\TroubleshootWindowsPerformance`
+ 如果提供了亚马逊简单存储服务 (Amazon S3) Service 存储桶，并且自动代入角色具有所需的权限，则捕获的日志将上传到 Amazon S3 存储桶。
+ 将最新`EC2Rescue`工具安装到 Amazon EC2 Windows 实例，用于捕获事件和系统日志（如果您选择安装），但它不会分析所捕获的进程转储和日志`EC2Rescue`。

**重要**  
要执行本运行手册，Amazon EC2 Windows 实例必须由 AWS Systems Manager管理。有关更多信息，请参阅[为什么我的 Amazon EC2 实例没有显示为托管节点](https://repost.aws/knowledge-center/systems-manager-ec2-instance-not-appear)。
要执行本运行手册，Amazon EC2 Windows 实例必须在 Windows 8.1/ Windows Server 2012 R2 (6.3) 或更高版本上运行 PowerShell 4.0 或更高版本。有关更多信息，请参阅 [Windows 操作系统版本](https://learn.microsoft.com/en-us/windows/win32/sysinfo/operating-system-version)。
要生成性能日志，根设备上至少需要 10 GB 的可用空间。如果根磁盘大于 100 GB，则可用空间必须大于磁盘大小的 10%。如果您在执行过程中转储进程，则可用空间必须大于 10 GB，再加上该进程消耗的内存总量（当该进程消耗的内存超过 10 GB 时）。
根设备上生成的日志不会自动删除。
运行手册不会卸载该`EC2Rescue`工具。有关更多信息，请参阅[用`EC2Rescue`于 Windows 服务器](https://docs.aws.amazon.com//AWSEC2/latest/WindowsGuide/Windows-Server-EC2Rescue.html)。
最佳做法是在性能影响期间运行此自动化。您也可以使用 AWS Systems Manager 状态管理器关联或通过安排 AWS Systems Manager 维护窗口来定期运行它。

 [运行此自动化（控制台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootWindowsPerformance) 

**文档类型**

自动化

**所有者**

Amazon

**平台**

Windows

**参数**

**所需的 IAM 权限**

`AutomationAssumeRole` 参数需要执行以下操作才能成功使用运行手册。
+ `ec2:DescribeInstances`
+ `ssm:DescribeAutomationExecutions`
+ `ssm:DescribeInstanceInformation`
+ `ssm:GetAutomationExecution`
+ `ssm:ListCommands`
+ `ssm:ListCommandInvocations`
+ `ssm:SendCommand`
+ `s3:ListBucket`
+ `s3:GetEncryptionConfiguration`
+ `s3:GetBucketPublicAccessBlock`
+ `s3:GetBucketPolicyStatus`
+ `s3:PutObject`
+ `s3:GetBucketAcl`
+ `s3:GetAccountPublicAccessBlock`

 *（可选）在实例配置文件上附加的 IAM 角色或在实例上配置的 IAM 用户需要执行以下操作才能将日志上传到为参数指定的 Amazon S3 存储桶`LogUploadBucketName`：*
+ `s3:PutObject`
+ `s3:GetObject`
+ `s3:ListBucket`

 **说明** 

按照这些步骤对自动化进行配置：

1. [https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootWindowsPerformance/description](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootWindowsPerformance/description)在 Systems Manager 的 “文档” 下导航至。

1. 选择 Execute automation（执行自动化）。

1. 对于输入参数，请输入以下内容：
   + **AutomationAssumeRole （可选）：**

     允许 Systems Manager Automation 代表您执行操作的 AWS AWS Identity and Access Management (IAM) 角色的亚马逊资源名称 (ARN)。如果未指定角色，Systems Manager Automation 将使用启动此运行手册的用户的权限。
   + **InstanceId （必填）：**

     您要在其中运行自动化的目标 Amazon EC2 Windows 实例的 ID。该实例必须由 Systems Manager 管理才能执行自动化。
   + **CaptureProcessDump （可选）：**

     要捕获的进程转储类型。自动化可以为可能在自动化开始时造成性能影响的流程捕获一个进程转储。实例根卷需要至少 10 GB 的可用空间（当根卷大小大于 100 GB 时，需要大于磁盘大小的 10%；如果进程消耗的内存超过 10 GB，则需要加上 10 GB 加上进程消耗的总内存大小）。
   + **LogCaptureDuration （可选）：**

     问题出现时，此自动化将捕获日志的分钟数，介于`1`和`15`之间。默认值为 `5`。
   + **LogUploadBucketName （可选）：**

     您账户中您要上传日志的 Amazon S3 存储桶。存储桶必须配置服务器端加密 (SSE)，并且存储桶策略不得向不需要访问捕获日志的各方授予不必要的 read/write 权限。亚马逊 EC2 Windows 实例必须有权访问亚马逊 S3 存储桶。
   + **安装 EC2RescueTool （可选）：**

     设置为`Yes`允许运行手册安装该`EC2Rescue`工具的最新版本以捕获 Windows 事件和系统日志。默认值为 `No`。
   + **致谢（必填）：**

     阅读本自动化操作手册所执行操作的完整详细信息，如果您同意，请键入`Yes, I understand and acknowledge`。  
![\[Input parameters form for troubleshooting Amazon EC2 Windows instance performance issues.\]](http://docs.aws.amazon.com/zh_cn/systems-manager-automation-runbooks/latest/userguide/images/awssupport-troubleshoot-windows-performance_input_parameters.png)

1. 选择执行。

1. 自动化启动。

1. 文档将执行以下步骤：
   + **`CheckConcurrency:`**

     确保只有一次针对该实例执行此运行手册。如果运行手册发现另一个针对同一实例的执行，它将返回错误并结束。
   + **`AssertInstanceIsWindows:`**

     断言 Amazon EC2 实例在 Windows 操作系统上运行。否则，自动化将结束。
   + **`AssertInstanceIsManagedInstance:`**

     断言 Amazon EC2 实例由管理。 AWS Systems Manager否则，自动化将结束。
   + **`VerifyPrerequisites:`**

     验证实例操作系统上的 PowerShell 版本，并确保可以通过 Systems Manager 连接实例以运行 PowerShell 命令。此自动化支持在 Windows 8.1 /Server 2012 R2 (6.3) 或更高版本上运行 PowerShell 4.0 及更高版本。如果版本较旧，则自动化将失败。当您选择将日志上传到 Amazon S3 存储桶时，此自动操作会检查 “ AWS 工具” PowerShell 模块是否可用。否则，自动化将结束。
   + **`BranchOnProcessDump:`**

     分支取决于您是否将其设置为捕获影响性能的进程的转储。
   + **`CaptureProcessDump:`**

     检查实例是否有足够的空间来运行此自动化（当您选择 “最高 CPU /内存” 时）。
   + **`CapturePerformanceLogs:`**

     再次检查磁盘空间并在实例上运行 PowerShell 脚本以创建 perfmon 计数器并启动性能监视器和 Windows 性能记录器日志记录。脚本在满足定义`LogCaptureDuration`后停止。
   + **`SummarizePerformanceLogs:`**

     汇总上一步生成的 XML 报告`CapturePerformanceLogs`，找出自动化输出中显示的消耗最多 WorkingSet 64（内存）和处理器时间 (CPU) 百分比的负责进程。它会生成类似的网络接口 LogicalDisk、内存 TCPv4 IPv4、 UDPv4 和的使用信息，并将其保存到`analysis_output.log`输出文件夹中。
   + **`BranchOnInstallEC2Rescue:`**

     分支（如果您将其设置为在 Amazon EC2 实例中安装最新`EC2Rescue`工具）。
   + **`InstallEC2RescueTool:`**

     在实例操作系统中安装该`EC2Rescue`工具以使用捕获`EC2Rescue`日志`AWS-ConfigureAWSPackage`。
   + **`RunEC2RescueTool:`**

     在实例操作系统中运行该`EC2Rescue`工具以捕获所需的所有日志。 `EC2Rescue`仅捕获所需的日志以节省空间。
   + **`BranchOnIfS3BucketProvided:`**

     根据用户的输入进行分支`LogUploadBucketName`，以查看是否有可用于上传日志的存储桶名称。
   + **`GetS3BucketPublicStatus:`**

     确定是否提供了 Amazon S3 存储桶，如果提供，则确认该 Amazon S3 存储桶不是公有的，并且已使用 SSE 进行配置。
   + **`UploadLogResult:`**

     将日志上传到提供的 Amazon S3 存储桶。如果 PowerShell 版本为 5.0 或更高版本，它会将日志压缩为 ZIP 存档并上传。它会在上传完成后删除 ZIP 文件。如果 PowerShell 版本低于 5.0，则会将文件直接上传到文件夹。
   + **`CleanUpLogsOnFailure:`**

     当步骤失败时，清除该`CapturePerformanceLogs`步骤生成的所有日志。如果 SSM 代理无法正常工作或 Windows 系统没有响应，则该`CleanUpLogsOnFailure`步骤可能会失败或超时。

1. 完成后，请查看 “输出” 部分，了解执行的详细结果：

   在目标实例具有所有必需先决条件的情况下执行。  
![\[Output logs showing performance capture process, EC2Rescue completion, and top CPU/memory usage processes.\]](http://docs.aws.amazon.com/zh_cn/systems-manager-automation-runbooks/latest/userguide/images/awssupport-troubleshoot-windows-performance_outputs_all_prerequisites_met.png)

   目标实例在 Linux 平台上执行且执行失败。您可以选择步骤 ID 以查看失败详情。  
![\[Execution status showing failed overall status with 2 executed steps, 1 succeeded and 1 failed.\]](http://docs.aws.amazon.com/zh_cn/systems-manager-automation-runbooks/latest/userguide/images/awssupport-troubleshoot-windows-performance_outputs_failed_linux_instance.png)

   步骤的失败详情`AssertInstanceIsWindows`。  
![\[Failure details showing verification error for Linux property value instead of Windows.\]](http://docs.aws.amazon.com/zh_cn/systems-manager-automation-runbooks/latest/userguide/images/awssupport-troubleshoot-windows-performance_outputs_assert_windows_fail.png)

 **参考** 

Systems Manager Automation
+ [运行此自动化（控制台）](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootWindowsPerformance/description)
+ [运行自动化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-working-executing.html)
+ [设置自动化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-setup.html)
+ [支持自动化工作流登录页面](https://aws.amazon.com/premiumsupport/technology/saw/)