查找最昂贵的代码行并改进代码质量
优势
发现应用程序在哪里花费最高
代码和应用程序越高效,其运行成本越低。开发人员可以使用 Amazon CodeGuru Profiler 为生产中运行的任意应用程序找到节省成本的潜力。Amazon CodeGuru Profiler 提供有关如何解决性能问题以及运行低效代码的估计成本的可视化内容和建议,以帮助开发人员确定修复的优先级。优化在 AWS Lambda、Amazon EC2、Amazon ECS、AWS Fargate 或 AWS Elastic Beanstalk 以及本地上运行的任何应用程序的性能。 对于 EC2、容器和本地应用程序,请将分析程序代理附加到 JVM;对于 Lambda 实例化,请通过更改一行代码将代理附加到 Lambda 代码中。
在开始生产之前发现代码成本过高的问题
Amazon CodeGuru Reviewer 由数十年的知识和经验进行训练,它可以使用机器学习、最佳实践以及对开源项目和 Amazon.com 的内部项目中的数百万次代码审查和数千个应用程序进行分析后总结出来的经验教训。对于代码审查,开发人员将其代码提交到 GitHub、GitHub Enterprise、Bitbucket Cloud、AWS CodeCommit,然后将 Amazon CodeGuru Reviewer 添加为代码审查者之一即可,无需对常规开发流程进行任何其他更改。Amazon CodeGuru Reviewer 分析存储库中的现有代码,以高准确度识别难以发现的错误和严重问题,提供有关如何修复的智能建议,并为后续代码审查创建基准。
立即找出最昂贵的代码行
Amazon CodeGuru Profiler 自动检测应用程序堆栈中关键方法的性能异常,这些异常通常会开始消耗更多 CPU 或呈现出延迟增加。它将在 10 分钟内将异常通知给指定的开发人员。这种早期检测和通知功能可以防止生产中问题的升级,并为开发人员提供足够的时间来解决问题,以免影响服务可用性和客户体验。
Amazon CodeGuru Reviewer 会检测与使用 AWS API 和开发工具包的最佳实践的偏差,标记可能导致出现生产问题的常见问题,例如检测分页缺失或批处理操作的错误处理。它可检测并发性问题,例如原子性违规和使用非线程安全的类,即使经验丰富的程序员也很难发现这些问题。它会检测资源何时未正确关闭,并因此而导致资源耗尽和中断。它还可发现缺少输入验证的情况,因为未经审查的输入可能会导致注入攻击或拒绝服务等问题。
客户成功案例
“当我们检测到生产中的异常时,得益于 AWS CodeGuru 的连续分析功能,我们已经能够将调查时间从几天缩短到几小时甚至是几分钟。现在,我们的开发人员可以将更多精力投入到交付差异化功能上,而不是花大量时间去调查生产环境中的问题。”
Atlassian 技术团队工程主管 Zak Islam
了解 Atlassian 如何使用 CodeGuru Profiler 在生产中分析服务 »
“创建高性能系统以及提供对现有系统的反馈和持续改进是应用程序开发的一部分。应用程序开发始于强大的体系结构基础,但通常要以应用程序代码的细节为终点。当 EagleDream 的团队深入研究这些细节时,我们发现了许多可以使用的工具,我们还发现同时使用静态和动态分析非常有帮助。我们发现,Amazon CodeGuru Profiler 提供的运行时分析是运行最简单、最快速的方法之一,它还可以生成对应用程序代码的见解,用于轻松修复代码。借助此工具,我们能够快速解决应用程序中产生的难以发现的瓶颈部分,然后开发出可以通过快速反馈循环进行实施和测试的更改。这使我们能够不断交付和改善自身与客户的工作负载,使工作负载更加高效,同时节省成本。”
EagleDream 首席云解决方案架构师 Dustin Potter
“在 DevFactory,我们管理着一百多种企业软件产品中的超过 6 亿行代码。我们未来路线图的一个重要组成部分是将所有产品转变为云原生产品,以利用 AWS 上的一系列出色的托管服务。对旧式的本地体系结构进行重新构建并将其转换到云中,将带来一系列工程挑战,从与所有最新服务保持同步到适应与这些体系结构相关的范式转变。Amazon CodeGuru 是一款极为有价值的工具,可帮助优化我们产品的性能,同时确保我们在利用这些服务时能够借鉴现有的全部最佳实践。如果没有像 Amazon CodeGuru Reviewer 这样的工具,我们就无法将像 FogBugz 这样的产品整个重新编写为 AWS 云原生产品。我们现在正在使用 Amazon CodeGuru Profiler 来优化许多产品,包括 EngineYard 基于容器的“无运营”平台以及下一代 Jive 协作平台。”
DevFactory 首席执行官 Rahul Subramaniam
负责为 Amazon.in 上的卖家安排服务的软件开发工程师 Chris Butterfield:
“运行 Amazon CodeGuru Profiler 并查看所提供的建议后,我意识到我们需要更新服务来修复与 CPU 锁定相关的问题。建议的修复措施非常有效,消除了线程争用警告,此警告一直占用 CPU 时间的 55.97%。修复后,我执行了负载测试,发现单个主机现在可处理 700 TPS,约为以前单个主机所能处理流量的 7.5 倍。经负载测试后,我们能够将实例数量减少约 75%,同时仍处理相同的流量。”
负责 Amazon.com 目录管理服务的高级软件开发工程师 Rajesh Konatham:
“我们刚刚禁用了一些与软件相关的配置,以缩短服务器启动时间并减少配置文件的混乱。我们使用 Amazon CodeGuru Profiler 了解此更改的影响,并意识到我们的工作流程系统每次执行分支时都会克隆文档,即使在不需要时也会如此。因此,有 15% 的 CPU 容量用于不必要地克隆值。按照 Amazon CodeGuru Profiler 的建议删除这些克隆值之后,CPU 使用率大幅降低 – 同步队列降低了 40%,异步队列降低了 67%。远远超出了 CPU 使用率降低 15% 的预期目标! 进一步降低要归功于克隆不再占用堆内存而减少了垃圾收集活动。”
负责 Amazon CloudWatch 的高级软件开发工程师 Neeraj Kumar:
“运行 Amazon CodeGuru Profiler 后,我们发现大部分 CPU 容量用于使用 SHA-2 签名 Amazon S3 请求。我们使用的是 JDK 提供的 SHA-2 实现,但 Amazon CodeGuru Profiler 建议改为使用 Amazon Corretto Crypto Provider。我们遵循了此建议,这使我们得以更快地实施其中的一些加密算法。Corretto Crypto Provider 与 JDK 的操作一致,因此容易上手。部署之后,我们看到多个 AWS 区域的 CPU 减少了大约 30%。”
负责 AWS 生成器工具的高级软件开发工程师 Mike Thompson:
“Amazon CodeGuru Reviewer 可帮助我们捕捉潜伏在关键代码段中为时已久的争用状况。人工审查人员可能会漏掉此问题,因为它不在我所更改的代码范围之内。Amazon CodeGuru Reviewer 充分提供了有关此问题的上下文,清晰解释了为何恶劣并提供了修复示例。进行所需更改非常简单,短短几分钟即可完成。有此服务把关真是太棒了,不仅可提高我们的代码质量,而且无需设置或中断。”
负责 AWS DynamoDB 的软件开发工程师 Danish Bashar:
“我从 Amazon S3 下载了一个文件,并没有意识到它是一个流,从而引起了资源泄漏。单元测试未发现这个问题,因为它运行正常。由于我没有显式地编写对象类型,因此我没有注意到此问题,而且我确信任何代码审查人员都不会注意到此问题。Amazon CodeGuru Reviewer 只用了几分钟来查看代码语义,便相对快速地发现了资源泄漏问题。Amazon CodeGuru Reviewer 建议使用 try-with-resources 关闭资源,我立即执行。此方法成功奏效。”
负责 AWS DynamoDB 的软件开发工程 Geetika Vasudeo:
“我们正在以不常用的方式使用 Amazon DynamoDB 表,我们在代码审查中忽略了这一点。Amazon CodeGuru Reviewer 发现操作会返回分页结果,而不是所有结果。我们进行了扫描,只获取到第一页上的结果,虽然目前这不是问题,但随着表的增长,我们最终只能看到第一页,而错过其余的结果。如果不正确处理,这可能会成为我们代码中的一个重大问题。辨识力一流,建议上佳。”
Amazon CodeGuru Reviewer 支持:
- Reviewer 支持的语言:Java
- 存储库 - GitHub、GitHub Enterprise、Bitbucket 云和 AWS CodeCommit
- 建议
Amazon CodeGuru Profiler 支持:
- Java 和其他 JVM 语言
- Amazon EC2、Amazon ECS、Amazon EKS、AWS Fargate、AWS Beanstalk
- 异常检测
- AWS Lambda
- 本地
- 火焰图
- 建议