你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 上可持续工作负载的测试注意事项
开发解决方案并将其部署到云的组织也需要可靠的测试。 了解运行工作负载测试的注意事项和建议,以及如何优化更可持续的测试模型。
重要
本文是 Azure Well-Architected 可持续工作负载 系列的一部分。 如果不熟悉本系列,建议从 什么是可持续工作负载开始?
测试效率
在低碳期间运行集成、性能、负载或任何其他密集测试
运行集成、性能、负载或任何其他密集的测试功能可能会导致大量处理。 用于测试已部署工作负载的精心设计有助于确保充分利用可用资源,减少碳排放。
绿色软件基金会协调: 碳意识
建议:
- 如果有可用的数据,请计划在数据中心的能源组合主要使用可再生能源时运行测试。 例如,在某些区域,在夜间运行测试可能更有益。
自动执行 CI/CD 以根据需要缩放辅助角色代理
运行未充分利用或处于非活动状态的 CI/CD 代理会导致更多的排放。
绿色软件基础对齐: 硬件效率
建议:
- 根据当前需求保持较高的计算利用率,避免不必要的容量分配。
- 仅在必要时横向扩展,不进行测试时,横向缩减。 最终,这可确保测试环境中没有空闲的计算资源。
- 考虑在 VM 中测试容器等经过优化的平台服务,利用平台来减少维护。
使用 CI/CD 代理时考虑缓存
在 CI/CD 期间使用缓存机制可以减少计算时间,从而减少碳排放。
绿色软件基金会的对齐方式: 能效
建议:
- 将步骤的结果存储在缓存中,并尽可能在不同的 CI/CD 运行之间重复使用它们:当某些步骤需要 CPU 时间生成在不同运行之间不经常更改的项目时,最好将其保存以供将来使用,以便每次运行生成相同项目时不会浪费 CPU 时间, 一遍又一遍。
- 如果 CI/CD 代理是自承载的,请使用代理的本地缓存,以进一步减少数据传输和排放。 这可确保缓存不会通过网络传输,而网络可能是重要的排放源。
拆分大型代码存储库
拆分大型存储库有助于 CI/CD 阶段,其中仅编译已更改的代码部分。 这减少了计算时间,最终减少了碳排放量。
绿色软件基金会的对齐方式: 能效
建议:
- 拆分大型代码存储库,将main代码与库和依赖项分开。
- 发布和重复使用跨多个存储库通用的项目和代码库。
建议:
- 将大型代码存储库拆分为较小的存储库,将main代码与库和依赖项分开。
- 发布和重复使用跨多个存储库通用的项目和代码库。
分析和测量
测量、分析和测试工作负载对于了解如何最好地使用分配的资源至关重要。
评估实现并行化的位置
如果不正确分析和测试工作负载,则很难知道它是否充分利用了基础平台和部署的资源。
绿色软件基金会的一致性: 衡量可持续性
建议:
- 测试应用程序以了解并发请求、同时处理等。
- 如果要运行机器学习 (ML) 进行测试,请考虑使用具有 GPU 的计算机,以提高效率。
- 确定工作负荷是否是性能密集型的,并致力于优化。
- 请考虑以下权衡: 运行基于 GPU 的计算机进行 ML 测试可能会增加成本。
使用混沌工程进行评估
运行集成、性能和负载测试可提高工作负载的可靠性。 但是,引入混沌工程可以显著提高可靠性和复原能力,以及应用程序对故障的反应。 通过这样做,可以优化工作负载,以正常处理故障,减少资源浪费。
绿色软件基金会的一致性: 衡量可持续性
建议:
- 使用负载测试或 混沌工程 评估工作负载如何处理平台中断和流量高峰或下降。 这有助于提高服务复原能力和对故障做出反应的能力,从而实现更优化的故障处理。
- 请考虑以下权衡: 在混沌工程过程中注入故障并增加任何系统上的负载也会增加用于测试资源的排放。 评估如何以及何时可以利用混沌工程来提高工作负载可靠性,同时考虑运行不必要的测试会话对气候的影响。
- 另一个角度是使用混沌工程来测试能量故障或碳排放量较高的时刻:请考虑设置测试,以挑战应用程序消耗尽可能低的能源。 使用特定的“生态”版本定义应用程序如何响应此类条件,告知用户他们通过牺牲某些功能并可能牺牲某些性能来排放尽可能最小的碳。 这也可以是为其可持续性评分的基准应用程序。
在测试中建立 CPU 和内存阈值
帮助生成测试,以测试应用程序中的可持续性。 请考虑进行基线 CPU 使用率测量,并在测试运行时检测 CPU 使用率基线的异常更改。 使用基线,可以更早地发现最近代码更改中做出的次优决策。
在部署和测试管道中添加测试和质量入口有助于避免部署不可持续的解决方案,从而降低排放。
绿色软件基金会的对齐方式: 能源效率
建议:
- 运行集成测试或单元测试时监视 CPU 和内存分配。
- 在应用程序代码中查找资源消耗异常高的区域,并首先专注于缓解这些方面。
- 如果超过既定的基线值,则配置警报或测试失败,从而有助于避免部署不可持续的工作负载。
- 考虑这种权衡:随着应用程序的增长,基线可能需要相应地移动,以避免在引入新功能时测试失败。
后续步骤
查看操作过程的设计注意事项。