提高应用程序性能:如何查找和修复慢速函数调用,HTTP请求和SQL查询
#java #性能 #ruby #vscode

运行时分析是开发人员在生产前查找,标记和修复软件缺陷的最新方法。我们关于规则及其影响的系列集中在本文中,涉及慢速呼叫,HTTP请求和SQL查询。

我将回顾这些规则的含义以及如何使用AppMap提高应用程序性能。

如果您通过视频学习得更好,则可以在此处查看这些规则的演练:

慢速呼叫

在第一个示例中,让我们使用appMap定位与慢速函数调用相关的性能查找,并使用新的火焰图视图查看每个函数调用的持续时间。优化那些长期运行的功能至关重要,因为它们会极大地影响性能。通常,速度缓慢的调用是由差的代码实践,算法不足或资源消耗过多引起的,导致可伸缩性问题,系统响应性的瓶颈甚至用户挫败感

为了说明这一点,让我们检查与缓慢渲染相关的代码段,并突出显示部分的用法。循环中局部的重复渲染会显着影响性能。

在某些情况下,我们今天正在剖析的示例是一家电子商务商店。为了确保我们都在同一页面上,我们正在查看的AppMap概述了用户选择要查看的产品的用户交互。在火焰图中可以清楚地看到所讨论的功能。

Flame Graph

当我们更深入地挖掘并查看实际发生的事情时。

Render function

我们可以看到Render_to_body调用了通过一系列选项的render_to_body_with_renderer。研究函数本身,我们看到了_renderers.each do ...,当传递一个带有许多需要渲染的部分的文件时,有些包含缓存操作本身时,我们开始确切地理解为什么此功能很长一段时间内运行。

Partials being rendered

看着跟踪视图,我们可以看到有多少个孩子被催生,并在我们可以从原始调用功能中返回之前就完成了。

stack trace

为了减轻这种情况,我们可能希望减少我们单独使用的部分。良好的编码实践鼓励抽象和代码重用,但这样做可能引入了性能问题。我们需要小心,不要抽象会影响运行时应用程序的性能。

慢http请求和SQL查询

慢慢的HTTP请求和SQL查询通常源于一系列情况,范围从次优的编码实践,效率低下的模式和配置,或者缺乏索引缺乏可用资源的索引以及高网络拥塞。我们需要了解潜在的原因,例如缺乏缓存的HTTP请求或利用内容输送网络(CDN)进行更快的内容交付。

查找并解决绩效问题

要解决慢速功能调用,HTTP请求和SQL查询,我们可以通过更新我们的编码实践并改善资源管理来实现有效的缓解策略。对于缓慢的渲染,可以使用替代家庭或索引视图来最大程度地减少函数调用的数量。此外,您可以利用不需要动态数据以及负载平衡技术的缓存技术和渲染前页面来减少我们网络的压力。

总之

为了提高应用程序性能,重要的是要识别和优化慢速功能调用,HTTP请求和SQL查询。

AppMap的火焰图和其他工具(例如interactive sequence diagram)使其易于查明性能瓶颈并实施适当的缓解策略。

链接

â€下载vscode和Jetbrains的AppMap:https://appmap.io/download

github上的1UU星级appmap:Ahttps://github.com/getappmap

♦在Twitter上关注:https://twitter.com/getappmap

221加入AppMap Slack:https://appmap.io/slack

â1ùï主阅读AppMap文档:https://appmap.io/docs

ð观看AppMap教程:https://www.youtube.com/@appmap

ðRobert Linder上的Unsplash

的封面照片