你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
性能效率是有效使用工作负荷资源。 如果没有良好的策略,可能无法预测和满足用户需求。 可能需要根据长期预测来利用预预配容量的方法,这样就不能充分利用云平台。
性能效率是指工作负荷能够通过扩展来适应不断变化的需求;在负载增加时,向上扩展以满足需求而不会影响用户体验,在需求低时,向下缩减以节省资源。 容量起着核心作用,但仅依赖于预置资源可能会在高负载下导致性能问题,并且在低使用期间造成不必要的成本。
与其将性能视为事后考虑,不如从一开始就将其视为核心考虑因素。 尽早开始,即使没有严格的性能目标,也可以在整个开发过程中测试和优化。 这种持续优化由实际使用情况告知,有助于防止将来出现的问题,并确保一致的性能。
规划良好的策略有助于使资源容量与业务需求保持一致,同时最大程度地减少浪费。 定义方法后,使用 性能效率清单 来验证设计。 如果没有主动策略,你可能会依赖静态预测,并缺少可缩放云基础结构的全部优势。
协商现实性能目标
|
|
|---|
从性能的角度来看,最好有明确定义的性能目标来启动设计过程。 若要设置这些目标,需要充分了解工作负荷应交付的业务要求和预期服务质量。 定义与业务利益干系人协作的预期。 而不是只关注技术指标,而是确定对关键流的用户体验的可接受影响。
存在循环依赖项。 无法度量尚未定义的内容,并且不能在没有度量的情况下定义。 因此,在 达成符合集体协议的可接受阈值定义之前,衡量工作负荷性能 也很重要。
性能和可靠性目标之间存在很强的相关性,这有助于确定性能、可用性和复原能力方面的服务质量。 如果没有明确的定义,很难衡量、警报和测试性能。 建立目标并通过一段时间内的测试确定实际数字后,可以针对这些目标实现持续测试的自动化。
在宏观层面定义目标时,要遵循最佳实践,即使这些目标是近似的或在某个范围内。
| 方法 | 优点 |
|---|---|
| 通过了解技术选项、探索设计可能性和应用实验结果,为有效协商做好准备。 使用历史数据确定使用模式和瓶颈。 整合市场分析、行业标准和专家投入的见解,以指导决策。 |
可以根据实际见解做出明智的决策。 性能目标将根据用户体验来制定,而用户体验则基于可行性、行业最佳实践和当前市场趋势。 |
| 与业务所有者就用户期望和绩效标准达成一致,同时考虑投资水平。 避免在设计的初始阶段深入了解精细细节,同时牢记更广泛的业务背景和增长计划。 |
你将避免偏差的假设,促进团队内部的清晰与激励,并做出关于权衡的明智设计决策。 它还确保性能目标考虑到未来需求,使当前工作与长期业务目标保持一致。 |
| 根据性能影响确定体系结构中关键流的优先级。 为每个流定义性能容错范围,从理想到不能接受。 通过考虑使用频率、重要性和复杂性来评估入口和退出点。 |
通过确定流优先级,可以将资源集中在对用户和业务成果影响最大的关键领域。 通过将系统分解为其部件和依赖项,可以了解每个组件的功能并影响性能。 你也意识到了潜在的问题。 它有助于建立性能基线和驱动优化。 |
| 开始开发一个性能模型,该模型考虑使用模式、业务影响和运营成本来计算初始性能目标。 使用行业标准来定义和衡量关键指标,并在考虑未来增长的同时评估业务约束中的需求和供应。 将此视为迭代过程,并在测试和生产期间,通过实际观察和从正在运行的解决方案收集的指标来优化目标。 确定在整个应用程序生命周期内产生有意义的利用率见解的测试用例的优先级。 |
性能模型有助于战略资源规划和优化,支持通过行业标准进行基准测试,并确保性能目标随时间推移保持适应性和相关性。 根据这些不断发展的目标,你将能够执行准确的容量规划,并建立在整个解决方案生命周期内保持相关的性能基线。 |
设计以满足产能要求
|
|
|---|
主动衡量绩效非常重要。 测量性能涉及 测量基线 ,并初步了解系统哪些组件可能会带来挑战。 无需执行完整性能测试或通过精细优化即可实现此目的。 通过执行这些初始步骤,可以在开发生命周期早期建立有效的性能管理基础。
检查整个系统,而不是专注于各个组件。 避免在此阶段微调。 进行精细的性能改进会导致其他领域的权衡。 在生命周期中进行并开始用户验收测试或转向生产时,可以快速确定哪些区域需要进一步优化。
| 方法 | 益处 |
|---|---|
| 根据使用要求评估优先级流的动态缩放需求。 了解预期的需求模式,并确定每个流必须如何弹性来满足这些要求。 | 可以为现有需要更多容量的组件定义可伸缩性要求,以及为需要额外组件进行负载分配的区域定义这些要求。 |
| 选择合适的资源,并在技术堆栈中对其进行优化调整,使你能够达到性能目标。 请考虑满足可伸缩性要求的功能。 |
整个系统将按照定义的目标执行。 可以使用内置功能,在需要时自动缩放。 它还有助于避免过度预配、节省成本,同时仍处理需求更改。 |
| 根据性能模型和所选资源的功能执行容量规划。 使用预测建模技术预测容量的预期变化。 |
系统将能够满足性能目标,同时保持为未来的需求做好准备。 预测建模有助于提前规划,避免资源短缺或过度预配,从而提高可靠性和成本效益。 |
| 实现概念证明并验证建议的设计选择以满足技术要求。 | 概念证明有助于验证设计能否满足性能目标和预期负载。 |
实现和保持性能
|
|
|---|
开发并不是一次性的工作。 它是一个持续的过程。 随着功能发生变化,性能应该也会变化。 用户行为模式和用户档案存在差异,甚至由于其他 Azure Well-Architected 支柱的优化所带来的变化。 任何更改都可能会给工作负荷资源带来压力。
保护系统,防止在性能目标上退步。 使用实际负载测试系统在生产中的性能,并在生产之前通过自动化测试模拟该负载。 在这两种情况下,都应有用于验证的监视做法。
请记住,性能目标随时间而变化,以响应更改。 根据测试和监视的指标更新性能模型。 清楚地指示增加、减少或不影响流量的性能。
始终准备好与业务利益干系人重新谈判和重置预期。
| 方法 | 益处 |
|---|---|
| 定义性能测试策略。 执行各种类型的测试,包括手动、低工作量的测试以重新访问基准。 使用与其兼容的工具向管道添加常规性能测试。 |
可以确保资源得到有效分配,并根据容量规划验证指标。 自动例程性能测试有助于持续评估延迟、压力和负载能力等关键因素,从而更轻松地提前检测问题并随时间推移保持性能稳定。 |
| 将性能测试正式化为质量入口。 | 这些检查点确保部署的每个阶段都符合性能标准,然后再继续。 它们有助于尽早发现问题,并允许你做出质量决策。 例如,如果性能低于预期,则阻止发布。 |
| 设置性能监视过程,用于跟踪端到端业务事务和技术指标,例如 CPU、延迟和每秒请求。 请确保在生产中使用实际和综合事务。 针对性能回归设置监控警报。 |
通过监视系统的所有部分,可以清楚地了解情况,并可以快速检测基础结构和应用程序中的问题。 它有助于微调资源以维护性能标准,并提前跟踪进度或发现问题。 |
| 使用情况增加时,仔细审查性能测试结果和监控数据,在系统投产时数据会不断累积。 优先处理解决性能下降问题的措施,并将其添加到计划执行的待办任务列表中。 |
使用数据跟踪和比较性能趋势有助于在影响用户体验之前做出明智的优化决策并提前捕获问题。 它还可确保不会对已经达到容量的系统进行过度优化。 |
| 了解可优化技术堆栈性能的设计模式,考虑应用程序和基础计算和数据层。 | 可以解决瓶颈问题,并实现补偿控制,以减少延迟和系统负载。 |
| 构建专注于性能的编码技能,并遵循促进高效编码模式的标准。 | 编写良好的高性能代码通过减少问题来帮助加快测试速度,并帮助避免在保持代码一致的同时进行返工。 |
针对长期改进进行优化
|
|
|---|
初始性能目标旨在在已知约束内提供合理的用户体验。 随着系统的发展, 使用实际生产数据重新评估这些目标 ,以更好地了解使用模式、平台更改和潜在收益,确保优化工作非常及时且有效。 最好延迟主要优化,直到此数据可用以避免过早决策。
性能优化是监视、优化、测试和部署的持续周期。 效率改进可以减少资源使用,有时会导致过度预配。 然后,可以使用此额外容量来提高可靠性、降低成本或支持新功能,而无需添加基础结构。
| 方法 | 益处 |
|---|---|
| 将专用时间用于性能优化,作为整个开发生命周期的常规做法。 | 在性能驱动的文化中,此方法强化了问责,团队会主动监视并持续提高系统性能。 |
| 通过分析生产中的历史趋势,通过改进的设计模式和组件来增强体系结构,重新审视非功能要求并建立新的目标。 | 新的设计和组件(如缓存或 CDN)可以优化系统并提高用户体验。 |
| 获取最新技术,并随时了解可提高性能的技术创新。 利用依赖框架和库发布的新版本优势。 同样,在更新和修补平台资源时使用新功能。 |
性能目标为采用新技术提供了理由。 过去可能速度较慢的代码在这些更新中可能更快。 你还希望了解某些更新会对性能产生负面影响。 |