当前位置: 首页 > 面试题库 >

在生产中对Web应用程序进行性能分析的性能成本

钱选
2023-03-14
问题内容

我正在尝试使用大型复杂的tomcat Java
Web应用程序解决性能问题。目前最大的问题是,内存使用量有时会激增,应用程序将变得无响应。我已经修复了我可以使用日志探查器和日志文件的贝叶斯分析解决的所有问题。我正在考虑在生产的Tomcathtml" target="_blank">服务器上运行探查器。

致读者的注意事项:

我了解有些人可能会发现对生产应用程序进行冒犯性分析的想法。请放心,我已经用尽了大多数其他选项。我正在考虑这样做的原因是,我没有资源来完全复制测试服务器上的生产设置,并且无法导致测试服务器上出现感兴趣的故障。

问题:

我正在寻找对在tomcat上运行的Java Web应用程序有效的答案,或者以与语言无关的方式回答此问题。

  • 分析的性能成本是多少?
  • 还有其他原因导致在生产环境中远程连接和配置Web应用程序是个坏主意(奇怪的故障模式,安全性问题等)?
  • 分析对内存占用量有多大影响?
  • 具体来说,有没有性能成本非常低的Java分析工具?
  • 是否有专门用于分析Web应用程序的Java分析工具?
  • 是否有人对使用visualVM进行性能分析的性能成本有基准?
  • visualVM可以扩展到什么大小的应用程序和数据集?

问题答案:

OProfile及其祖先DPCI是为概要分析生产系统开发的。这些操作的开销非常低,而且它们可以对
整个系统 (包括内核)进行概要分析,因此您可以在VM 内核和库中发现性能问题。

要回答您的问题:

  1. 开销: 这些是 采样的 探查器,也就是说,它们以一定的时间间隔生成计时器或性能计数器中断,并查看当前正在执行的代码。他们使用它来构建您在哪里花费时间的直方图,并且在合理的采样间隔内开销非常低(他们声称为1-8%)。

查看此图,了解OProfile的采样频率与开销的关系。如果默认设置不符合您的喜好,则可以调整采样频率以降低开销。

  1. 在生产中的用法: 使用OProfile的唯一警告是您需要将其安装在生产计算机上。我相信自RHEL3以来,Red Hat中已经提供了内核支持,而且我很确定其他发行版也支持它。

  2. 内存: 我不确定OProfile的确切内存占用量是多少,但是我相信它会保留相对较小的缓冲区,并偶尔将其转储到日志文件中。

  3. Java: OProfile包含支持Java的配置代理,并且了解在JIT中运行的代码。因此,您将能够看到Java调用,而不仅是解释器和JIT中的C调用。

  4. Web应用程序: OProfile是系统级的探查器,因此它不知道Web应用程序将具有的会话,事务等内容。

就是说,它是一个 完整的系统
探查器,因此,如果您的性能问题是由操作系统和JIT之间的不良交互导致的,或者它在某些第三方库中,则可以看到,因为OProfile探查器内核和库。这对于生产系统是一个优势,因为您可以捕获由于测试环境中可能不存在的生产环境配置错误或细节而导致的问题。

  1. VisualVM: 不确定这一点,因为我没有使用VisualVM的经验

这是有关使用OProfile查找性能瓶颈的教程。



 类似资料:
  • 问题内容: 我有一个Spring应用程序,我认为它存在一些瓶颈,因此我想用一个探查器运行它来衡量哪些功能需要花费多少时间。有什么建议我应该怎么做? 我正在运行STS,该项目是一个maven项目,并且正在运行Spring 3.0.1 问题答案: 我已经使用Spring AOP做到了。 有时,我需要有关在项目中执行某些方法(例如,控制器的方法)花费多少时间的信息。 在servlet xml中,我把 另

  • 到目前为止,我认为我已经掌握了async await如何使应用程序更具响应性的概念,但我有两点悬而未决: 层注意事项异步等待是否必须从存储库层一直到MVC或WCF层才能获得性能优势,或者我可以只对需要很长时间的存储库方法进行异步操作吗? “等待”用法如果我只能在存储库级别工作,有一部分我不明白。使用这种(低层)方法,线程能够在等待io绑定代码完成的同时为传入的客户端请求提供服务吗? 在我看来,当长

  • 问题内容: 我正在使用Node.js进行一些Web抓取。我想使用XPath,因为我可以使用几种GUI半自动生成它。问题是我找不到有效的方法。 非常慢。它会在一分钟左右的时间内解析500KiB文件,并具有完整的CPU负载和大量内存。 流行的HTML解析库(例如)既不支持XPath,也不公开W3C兼容的DOM。 很明显,有效的HTML解析是在WebKit中实现的,因此可以使用或将其作为一种选择,但这些

  • 我见过一些APM,它只测量运行在WAS上的网络应用程序。 Elastic APM能否衡量纯Java应用程序等其他应用程序的性能? 如果没有,我可以使用吗https://www.elastic.co/guide/en/apm/agent/java/1.x/public-api.html(公共API),以便它可以测量非web应用程序的性能? 我将感谢你的建议。干杯

  • 嗨, 我读了很多博客和教程。我不知道如何在基于cookie的粘性Web应用程序上进行性能测试,该应用程序位于反向代理负载均衡器后面。我有3个支持的应用程序服务器,为购物车的同一个实例提供服务。负载均衡器位于它们前面并引导流量。 问题:当我发送HTTP请求进行性能分析时,负载平衡器(通过cookie跟踪客户端ip)将HTTP请求重定向到分配给的同一后端服务器。我可以选择使用IP欺骗,但当后端服务器分

  • 用户期望页面的交互性和流畅。但是在传输到显示器的过程中每个阶段都可能出现闪烁卡顿。 接下来我们将了解用于识别和解决运行时性能降低的常见问题的工具和策略。 TL;DR 不要编写强制浏览器重新计算布局的JavaScript。分离读写函数,并首先执行读取。 不要使您的CSS过于复杂。使用更少的CSS和保持你的CSS选择器简单。尽可能多避免layout。 总是选择不触发layout的CSS。 绘画可能占用