你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于此 Azure Well-Architected 框架性能效率清单建议:
| PE:12 | 持续优化性能。 专注于显示随时间推移性能恶化的组件,例如数据库和网络功能。 |
|---|
本指南介绍持续性能优化的建议。 持续性能优化是持续监视、分析和提高性能效率的过程。 性能效率适应需求增加和减少。 性能优化需要在整个工作负荷的整个生命周期内持续进行。 工作负荷性能通常会随着时间推移而下降或过长,需要考虑的因素包括使用模式、需求、功能和技术债务的变化。
定义
| 术语 | Definition |
|---|---|
| 数据分层 | 一种存储策略,涉及根据数据访问频率对数据进行分类,并相应地将其存储在存储层上。 |
| 技术债务 | 在开发过程中有意采用的低效性、欠佳的设计选择或快捷方式,以更快地交付代码。 |
| 生存时间 | 设置数据的过期时间的机制。 |
性能效率在于工作负荷容量与实际使用情况保持一致。 性能过度的工作负荷与性能不佳的工作负荷一样有问题。 利弊不同。 过度表现会影响成本优化。 性能不佳会影响用户。 性能效率的关键是监视、调整和测试随时间推移。 你需要定期查看性能指标,并根据需要进行调整,以确保工作负荷高效。 在实现前和实现后测试所有更改都需要达到性能目标。
开发性能文化
性能文化是预期持续改进的环境,团队从生产中学习。 性能优化需要专门技能。 工作负荷团队需要适当的技能和思维模式来优化其性能,以满足增加和减少需求。 你还需要分配其时间,以支持在出现性能问题时进行所需的监视和修正。 这些团队需要明确的期望。 例如,性能目标、基线和偏差阈值(距离基线的可接受程度)需要高度可见和社交化。
权衡:持续性能优化需要具有正确技能和时间的团队来查找和修复性能问题。 将人员投入到绩效上会增加运营成本。 如果人员资源有限,持续性能优化可能会占用其他作任务的时间。
评估新平台功能
评估新的平台功能涉及检查可提高性能效率的平台的新功能和工具,例如优化的存储解决方案、缓存机制或资源管理工具。 新的平台功能可以为提高性能效率开辟途径。 保持平台和工具 up-to-date,以确保使用最新的创新和最佳做法。 通过这些新增功能持续监视反馈和性能指标,以优化方法。
确定优化工作的优先级
主动优化性能意味着在出现任何性能问题之前采取主动措施来改进和增强工作负荷的性能。 使用主动措施涉及识别潜在的瓶颈、监视性能指标并实施优化,以确保工作负荷高效运行并满足所需的性能目标。 根据组件、关键流和技术债务的恶化分析,可以实施特定于每个区域的性能优化。 改进可能涉及代码更改、基础结构调整或配置更新。
确定组件恶化的优先级
工作负荷通常具有数据库和网络组件等组件,这些组件容易随时间推移性能下降。 随着工作负荷的发展和使用模式的变化,这些更改通常会影响工作负荷中各个组件的性能。 数据库中的数据增加可能会导致查询运行时间更长,数据检索速度变慢。 使用模式的更改可能会导致查询设计不理想。 随着工作负荷的发展,曾经效率高的查询可能会变得效率低下。 低效的查询可能会消耗过多的资源并降低数据库性能。 工作负荷使用率增加可能会导致网络流量增加,导致拥塞和延迟问题。
必须不断努力优化这些组件的性能。 主动识别和解决工作负荷中的性能问题。 通过确定已知恶化的组件优先级,可以主动解决潜在的性能问题,并确保工作负荷的顺利运行。 它可能涉及实现性能优化技术、优化资源分配或根据需要升级硬件或软件组件。
确定关键流的优先级
关键流是工作负荷中最重要的高优先级流程或工作流。 通过优先考虑这些关键流,可确保工作负荷的最基本部分针对性能进行优化。 了解哪些流至关重要,有助于确定优化工作的优先级。 优化应用程序最重要的领域的性能效率可提供最高的投资回报。 应监视关键流和最常用的页面。 寻找提高效率的方法。
自动执行性能优化
自动化可以消除重复且耗时的手动过程,从而有效地执行它们。 自动化可减少人为错误的可能性,并确保运行优化任务的一致性。 通过自动执行这些任务,还可以释放人员专注于更复杂的活动和增加价值的活动。 可以将自动化应用于各种任务,例如性能测试、部署和监视:
自动化性能测试:使用 JMeter、K6 或 Selenium 等自动化性能测试工具来模拟不同的工作负荷和方案。
自动部署:实现自动化部署过程,确保部署一致且无错误。 使用 CI/CD 工具自动执行部署过程。 这些工具可以帮助你识别性能瓶颈,因为使用它们来针对终结点进行测试、检查 HTTP 状态,甚至验证数据质量和变体。
监视和警报:设置自动监视和警报系统,以持续监视性能指标并检测任何偏差或异常。 检测到性能问题时,可以触发自动警报来通知相应的团队或个人。
事件管理:实现自动化事件管理系统,该系统可以接收警报、创建票证并将票证分配给相应的团队以解决问题。 这些步骤有助于确保及时解决性能问题并将其分配给正确的资源。
自动诊断:开发自动化诊断工具或脚本,这些工具或脚本可以分析性能数据并确定性能问题的根本原因。 这些工具可以帮助查明导致性能问题的系统的特定区域或组件。
自动修正作:定义和实施可在检测到特定性能问题时触发的自动修正作。 这些作可能包括重启服务、调整资源分配、清除缓存或实现其他性能优化技术。
自我修复系统:通过针对已知性能问题自动执行恢复过程,在系统中构建自我修复功能。 此功能可能涉及自动修复或调整系统配置以还原最佳性能。
解决技术债务问题
技术债务是指在开发过程中积累的效率低下、设计选项欠佳或快捷方式,这些选择可能会影响性能。 技术债务、不明确的代码和过于复杂的实现可以使性能效率更加难以实现。 解决技术债务涉及识别和解决这些问题,以提高工作负荷的整体性能和可维护性。 这项工作可能包括重构代码、优化数据库查询、改进体系结构设计或实现最佳做法。 也许你引入了技术债务来满足最后期限,但你需要解决技术债务,因为随着时间的推移优化性能效率。
优化数据库
持续优化数据库涉及识别和实施优化,以确保数据库能够处理负载、提供快速响应时间以及最大程度地减少资源利用率。 通过定期优化数据库,可以改善应用程序性能、减少停机时间并提高整体用户体验。
优化数据库查询:编写不佳的 SQL 语句可能会降低数据库性能。 低效的 JOIN 条件可能会导致不需要的数据处理。 复杂的子查询、嵌套查询和过多的函数可以减少运行速度。 应重写检索过多数据的查询。 应识别最常见的或关键的数据库查询并对其进行优化。 优化有助于确保查询速度更快。
维护索引:评估索引策略,以确保正确设计和维护索引。 索引维护包括标识未使用的索引或冗余索引,以及创建与查询模式一致的索引。 数据库索引有助于加速数据检索作。 对于关系数据库,需要监视索引碎片。 应定期重新生成或重新组织索引。 对于非关系数据库,需要为工作负荷选择正确的索引策略。 对可用数据库使用自动优化。 这些功能包括自动创建缺失索引、删除未使用的索引和计划更正。 有关详细信息,请参阅 维护索引以提高性能。
查看模型设计:查看数据模型,确保针对应用程序的特定要求对其进行优化。 提高查询性能和数据检索可能涉及非规范化、分区或其他技术。
优化数据库配置:优化数据库配置设置,例如内存分配、磁盘 I/O 和并发设置,以最大程度地提高性能和资源利用率。
优化数据效率
优化数据效率是确保尽可能以最有效的方式存储、处理和访问数据的过程。 数据分层和使用生存时间(TTL)是可用于优化数据效率的技术。 可以在各种数据存储方案中应用这些技术,例如数据库、文件系统或对象存储。
使用数据分层:数据分层涉及根据数据访问的重要性或访问频率对数据进行分类,并相应地将数据存储在不同的层中。 设置数据分层可以更有效地使用存储资源并提高性能。 经常访问或关键数据可以存储在高性能层中,而不太频繁访问或不太关键的数据可以存储在成本较低的层中。 目标是一段时间内查看数据使用情况,以确保数据位于正确的层中。 随着数据优先级的变化,数据应从一个层移动到另一层。
实现生存时间:生存时间是设置数据的过期时间的机制。 生存时间允许在特定时间段后自动删除或存档数据,减少存储要求并改进数据管理。 通过设置适当的生存时间,可以删除不必要的数据,释放存储空间并提高整体效率。 会话数据、临时文件和缓存数据是生存时间的常见目标。 数据库条目也可以有生存时间。
风险:生存时间过短可能会导致性能问题。
Azure 便利化
自动化性能优化:Azure 顾问基于工作负荷遥测提供自动 性能建议 。 应定期查看并解决这些建议。 Azure Monitor 提供对系统性能的实时见解,并允许基于特定性能指标设置警报。 Azure Log Analytics 针对收集的日志和指标提供自动诊断和分析。 Azure Application Insights 等工具提供优化性能的见解和建议。
若要自动修正,请使用自动化工具或脚本在触发警报时自动执行修正作。 可以使用 Azure 自动化、Azure Functions 或自定义自动化解决方案。
Azure 允许性能测试来模拟不同的用户方案和工作负荷。 自动测试可帮助你识别性能瓶颈并相应地优化系统。 Azure DevOps 等工具可以自动执行性能测试。
优化数据库:SQL 系列产品具有许多 内置功能 ,可用于监视和修正 SQL 数据库性能。 应使用这些功能来维护数据库性能。 Azure SQL 数据库具有 自动优化 功能,可持续监视和改进查询。 应使用此功能自动改进 SQL 查询。
可以使用 Azure Cosmos DB 的功能 自定义索引策略 。 自定义策略以满足工作负荷的性能需求。
优化数据效率:数据分层允许根据数据访问频率和重要性将数据存储在不同的层中。 它有助于优化存储成本和性能。 Azure 为 Blob 数据提供不同的存储层,例如热层、冷层和存档层。 热层针对经常访问的数据进行优化,冷层用于不经常访问的数据,存档层用于很少访问的数据。 通过使用最适合数据的存储访问层,可以确保高效的数据存储和检索。
相关链接
- 优化索引维护以提高查询性能并减少资源消耗
- 使用 Azure 顾问提高 Azure 应用程序的性能
- Azure SQL 数据库和 Azure SQL 托管实例中的自动优化
- Azure Cosmos DB 中的索引策略
性能效率清单
请参阅完整的建议集。