你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

持续性能优化建议

适用于此 Azure Well-Architected 框架性能效率清单建议:

PE:12 持续优化性能。 关注随时间推移显示性能下降的组件,例如数据库和网络功能。

本指南介绍持续性能优化的建议。 持续性能优化是持续监视、分析和提高性能效率的过程。 性能效率可适应需求的增长和减少。 性能优化需要在工作负载的整个生命周期内持续进行。 工作负荷性能通常会随时间推移而降级或变得过高,需要考虑的因素包括使用模式、需求、功能和技术债务的变化。

定义

术语 定义
数据分层 一种存储策略,涉及根据数据访问频率对数据进行分类,并相应地将其存储在存储层上。
技术债务 在开发过程中,为了更快地交付代码而故意采用的累积低效、不理想的设计选项或快捷方式。
生存时间 一种为数据设置过期时间的机制。

关键设计策略

性能效率是工作负载容量与实际使用情况保持一致的情况。 性能过度的工作负荷与性能不佳的工作负荷一样有问题。 权衡不同。 性能过剩会影响成本优化。 性能不佳会影响用户。 性能效率的关键是随时间推移进行监视、调整和测试。 需要定期查看性能指标并根据需要进行调整,以确保工作负荷高效。 若要达到性能目标,需要在实施前和实现后测试所有更改。

发展性能文化

绩效文化是一种环境,其中需要持续改进,团队从生产中吸取教训。 性能优化需要专业技能。 工作负载团队需要适当的技能和思维模式来优化其性能,以满足需求的增长和减少。 还需要分配其时间,以支持在性能问题出现时进行所需的监视和修正。 这些团队需要明确的期望。 例如,性能目标、基线和偏差阈值 (离基线有多远是可接受的,) 需要高度可见和社交化。

权衡:持续性能优化需要具有适当技能和时间的团队来查找和修复性能问题。 将人员用于提高性能会增加运营成本。 如果人员资源有限,持续性能优化可能会占用其他操作任务的时间。

评估新平台功能

评估新的平台功能涉及检查可提高性能效率的平台的新功能和工具,例如优化的存储解决方案、缓存机制或资源管理工具。 新的平台功能可以为提高性能效率开辟途径。 使平台和工具保持最新,以确保使用最新的创新和最佳做法。 持续监视这些新增内容中的反馈和性能指标,以优化方法。

确定优化工作的优先级

主动优化性能意味着在出现任何性能问题之前,采取主动措施改进和增强工作负载的性能。 使用主动措施涉及识别潜在瓶颈、监视性能指标和实施优化,以确保工作负载高效运行并满足所需的性能目标。 根据对不断恶化的组件、关键流和技术债务的分析,可以实施特定于每个领域的性能优化。 改进可能涉及代码更改、基础结构调整或配置更新。

确定恶化组件的优先级

工作负荷通常包含数据库和网络组件等组件,这些组件容易随时间推移而降低性能。 随着工作负载的发展和使用模式的变化,这些更改通常会影响工作负载中各个组件的性能。 数据库中增加的数据可能会导致查询运行时间更长,数据检索速度变慢。 使用模式的更改可能会导致查询设计不理想。 随着工作负载的发展,曾经高效的查询可能会变得效率低下。 低效的查询可能会消耗过多的资源并降低数据库性能。 工作负荷使用量增加可能会导致网络流量增加,从而导致拥塞和延迟问题。

必须不断努力优化这些组件的性能。 主动识别并解决工作负载中的性能问题。 通过确定已知不断恶化的组件的优先级,可以主动解决潜在的性能问题,并确保工作负荷的顺利运行。 它可能涉及实现性能优化技术、优化资源分配或根据需要升级硬件或软件组件。

确定关键流的优先级

关键流是工作负载中最重要的高优先级流程或工作流。 通过确定这些关键流的优先级,可确保工作负载的最重要部分针对性能进行优化。 了解哪些流至关重要,有助于确定优化工作的优先级。 优化应用程序最重要的区域的性能效率可提供最高的投资回报。 应监视关键流和最常用的页面。 寻找使其更高效的方法。

自动执行性能优化

自动化可以消除重复且耗时的手动过程,从而可以有效地执行这些流程。 自动化可减少人为错误的可能性,并确保运行优化任务时保持一致。 通过自动执行这些任务,还可以让人们专注于更复杂的活动和增加价值的活动。 可以将自动化应用于各种任务,例如性能测试、部署和监视:

  • 自动性能测试:使用 JMeter、K6 或 Selenium 等自动化性能测试工具来模拟不同的工作负载和方案。

  • 自动部署:实现自动部署过程,以确保部署一致且无错误。 使用 CI/CD 工具自动执行部署过程。 这些工具可以帮助你识别性能瓶颈,因为你可以使用它们来测试终结点、检查 HTTP 状态,甚至验证数据质量和变化。

  • 监视和警报:设置自动监视和警报系统,以持续监视性能指标并检测任何偏差或异常。 检测到性能问题时,可以触发自动警报来通知相应的团队或个人。

  • 事件管理:实现可接收警报、创建票证并将票证分配给相应团队以解决问题的自动化事件管理系统。 这些步骤有助于确保及时解决性能问题并将其分配给正确的资源。

  • 自动化诊断:开发可分析性能数据并确定性能问题根本原因的自动化诊断工具或脚本。 这些工具可帮助查明导致性能问题的特定区域或系统组件。

  • 自动修正操作:定义并实现可在检测到特定性能问题时触发的自动修正操作。 这些操作可能包括重启服务、调整资源分配、清除缓存或实现其他性能优化技术。

  • 自我修复系统:通过自动执行已知性能问题的恢复过程,在系统中构建自我修复功能。 此功能可能涉及自动修复或调整系统配置以恢复最佳性能。

解决技术债务问题

技术债务是指在开发过程中累积的低效、设计选择不理想或可能影响性能的快捷方式。 技术债务、不明确的代码和过于复杂的实现可能会使性能效率更难以实现。 解决技术债务涉及识别和解决这些问题,以提高工作负载的整体性能和可维护性。 这项工作可能包括重构代码、优化数据库查询、改进体系结构设计或实现最佳做法。 也许你引入了技术债务以达到最后期限,但随着时间推移优化性能效率,你需要解决技术债务问题。

优化数据库

持续优化数据库涉及识别和实现优化,以确保数据库可以处理负载、提供快速响应时间并最大程度地减少资源利用率。 通过定期优化数据库,可以提高应用程序性能、减少停机时间并增强整体用户体验。

  • 优化数据库查询:编写不当的 SQL 语句可能会降低数据库性能。 低效的 JOIN 条件可能会导致不必要的数据处理。 复杂的子查询、嵌套查询和过多的函数可能会降低运行速度。 应重写检索过多数据的查询。 应确定最常见或关键数据库查询并对其进行优化。 优化有助于确保查询速度更快。

  • 维护索引:评估索引策略以确保正确设计和维护索引。 索引维护包括识别未使用的索引或冗余索引,以及创建与查询模式一致的索引。 数据库索引有助于加速数据检索操作。 对于关系数据库,需要监视索引碎片。 应定期重新生成或重新组织索引。 对于非关系数据库,需要为工作负荷选择正确的索引策略。 对数据库(如果可用)使用自动优化。 这些功能包括自动创建缺失索引、删除未使用的索引以及计划更正。 有关详细信息,请参阅 维护索引以提高性能

  • 查看模型设计:查看数据模型,确保根据应用程序的特定要求对其进行优化。 提高查询性能和数据检索可能涉及非规范化、分区或其他技术。

  • 优化数据库配置:优化数据库配置设置,例如内存分配、磁盘 I/O 和并发设置,以最大程度地提高性能和资源利用率。

优化数据效率

优化数据效率是确保以最高效的方式存储、处理和访问数据的过程。 数据分层和使用生存时间 (TTL) 是可用于优化数据效率的技术。 可以在各种数据存储方案中应用这些技术,例如数据库、文件系统或对象存储。

  • 使用数据分层:数据分层涉及根据数据的重要性或访问频率对数据进行分类,并相应地将数据存储在不同的层中。 设置数据分层可以更高效地使用存储资源并提高性能。 经常访问的数据或关键数据可以存储在高性能层中,而访问频率较低或关键程度较低的数据存储在成本较低的层中。 目标是查看一段时间内的数据使用情况,以确保数据位于正确的层中。 随着数据优先级的变化,数据应从一个层移动到另一层。

  • 实现生存时间:生存时间是一种为数据设置过期时间的机制。 生存时间允许在一定时间段后自动删除或存档数据,从而减少存储要求并改进数据管理。 通过设置适当的生存时间,可以删除不必要的数据,从而释放存储空间并提高整体效率。 会话数据、临时文件和缓存数据是生存时间的频繁目标。 数据库条目还可以有生存时间。

风险:生存时间过短可能导致性能问题。

Azure 简化

自动执行性能优化:Azure 顾问根据工作负荷遥测提供自动 性能建议 。 应定期查看并处理这些建议。 Azure Monitor 提供对系统性能的实时见解,并允许基于特定性能指标设置警报。 Azure Log Analytics 针对收集的日志和指标提供自动诊断和分析。 Azure 应用程序 Insights 等工具提供用于优化性能的见解和建议。

若要自动执行修正,请使用自动化工具或脚本在触发警报时自动执行修正操作。 可以使用Azure 自动化、Azure Functions或自定义自动化解决方案。

Azure 允许性能测试来模拟不同的用户方案和工作负载。 自动测试可以帮助你识别性能瓶颈并相应地优化系统。 Azure DevOps 等工具可以自动执行性能测试。

优化数据库:SQL 产品系列具有许多 内置功能 ,可用于监视和修正 SQL 数据库性能。 应使用这些功能来维护数据库性能。 Azure SQL数据库具有自动优化功能,可持续监视和改进查询。 应使用此功能自动改进 SQL 查询。

可以使用 Azure Cosmos DB 的功能 自定义索引策略 。 自定义策略以满足工作负载的性能需求。

优化数据效率:数据分层允许根据数据访问频率和重要性将数据存储在不同的层中。 它有助于优化存储成本和性能。 Azure 为 Blob 数据提供不同的存储层,例如热层、冷层和存档层。 热层针对频繁访问的数据进行优化,冷层适用于不经常访问的数据,存档层适用于很少访问的数据。 通过使用最适合数据的存储访问层,可以确保高效的数据存储和检索。

性能效率清单

请参阅完整的建议集。