

# PERF08-BP01 了解在哪些领域性能最为重要
<a name="perf_tradeoffs_performance_critical_areas"></a>

 了解并确定在哪些方面提高工作负载性能，会对效率或客户体验产生积极的影响。例如，拥有大量客户交互的网站会因为使用边缘服务在距离客户更近的位置向客户分发内容而受益。 

**期望的结果：** 通过了解架构、流量模式和数据访问模式，提高性能效率，并确定延迟和处理时间。确定随着工作负载增长可能会影响客户体验的潜在瓶颈。在确定这些领域时，查看可以通过部署哪项解决方案来解决相关的性能问题。

 **常见反模式：** 
+  您认为 `CPUUtilization` 或内存压力等标准计算指标足以捕获性能问题。 
+  您只使用由自己选定的监控软件记录的默认指标。 
+  您只在出现问题时审查指标。 

 **建立此最佳实践的好处：** 了解关键性能领域可以帮助工作负载负责人监控 KPI 并确定具有高影响力的优先改进。 

 **未建立这种最佳实践的情况下暴露的风险等级：** 高 

## 实施指导
<a name="implementation-guidance"></a>

设置端到端的跟踪，用于确定流量模式、延迟和关键性能领域。针对速度缓慢的查询或性能欠佳的碎片和分区数据，监控数据访问模式。使用负载测试或监控来确定受约束的工作负载领域。

## 实施步骤
<a name="w2aac19c11c11b5b6c17"></a>

1.  设置端到端的监控，用于收集所有工作负载组件和指标。 
   +  使用 [Amazon CloudWatch 真实用户监控（RUM，Real-User Monitoring）](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM.html) 来收集真实用户客户端和前端会话的应用程序性能指标。
   +  设置 [AWS X-Ray](https://aws.amazon.com/xray/) 以通过应用程序层跟踪流量，并确定组件间的延迟以及依赖关系。使用 X-Ray 服务地图查看工作负载组件之间的关系和延迟。
   +  使用 [Amazon Relational Database Service Performance Insights](https://aws.amazon.com/rds/performance-insights/) 查看数据库性能指标并确定性能改进机会。
   +  使用 [Amazon RDS 增强监控](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html) 查看数据库 OS 性能指标。
   +  收集每个工作负载组件和服务的 [CloudWatch 指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) ，确定哪些指标影响性能效率。
   +  设置 [Amazon DevOps Guru](https://aws.amazon.com/devops-guru/) 以获取额外的性能见解和推荐方案 

1.  执行测试以生成指标，确定流量模式、瓶颈和关键性能领域。 
   +  设置 [CloudWatch Synthetic Canary](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html) 以使用 `cron` 作业或速率表达式，通过编程方式模拟浏览器端的用户活动，从而生成一段时间内的稳定指标。
   +  使用 [AWS 分布式负载测试](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/) 解决方案生成峰值流量，或者在预期增长速率下测试工作负载。

1.  评估指标和遥测数据，确定您的关键性能领域。与团队一起审查这些领域，讨论监控和解决方案以避免瓶颈。 

1.  试验性能改进，并利用数据来衡量这些更改。 
   +  使用 [CloudWatch Evidently](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Evidently.html) 测试新的改进以及对工作负载的性能影响。

 **实施计划的工作量级别：** 要建立这种最佳实践，您必须审查端到端指标并密切关注当前的工作负载性能。设置端到端监控和确定关键性能领域所需的工作量为中等。 

## 资源
<a name="resources"></a>

 **相关文档：** 
+  [Amazon Builders' Library](https://aws.amazon.com/builders-library) 
+  [X-Ray 文档](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 
+  [Amazon CloudWatch RUM](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM.html) 
+  [Amazon DevOps Guru](https://aws.amazon.com/devops-guru/) 
+  [CloudWatch RUM 和 X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-services-RUM.html) 

 **相关视频：** 
+  [亚马逊开发构建者资料库简介（DOP328）](https://www.youtube.com/watch?v=sKRdemSirDM) 
+  [Amazon CloudWatch Synthetics 演示](https://www.youtube.com/watch?v=hF3NM9j-u7I) 

 **相关示例：** 
+  [使用 Amazon CloudWatch Synthetics 测量页面加载时间](https://github.com/aws-samples/amazon-cloudwatch-synthetics-page-performance) 
+  [Amazon CloudWatch RUM Web 客户端](https://github.com/aws-observability/aws-rum-web) 
+  [适用于 Node.js 的 X-Ray 开发工具包](https://github.com/aws/aws-xray-sdk-node) 
+  [适用于 Python 的 X-Ray 开发工具包](https://github.com/aws/aws-xray-sdk-python) 
+  [适用于 Java 的 X-Ray 开发工具包](https://github.com/aws/aws-xray-sdk-java) 
+  [适用于 .Net 的 X-Ray 开发工具包](https://github.com/aws/aws-xray-sdk-dotnet) 
+  [适用于 Ruby 的 X-Ray 开发工具包](https://github.com/aws/aws-xray-sdk-ruby) 
+  [X-Ray 进程守护程序](https://github.com/aws/aws-xray-daemon) 
+  [AWS 上的分布式负载测试](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/) 