我尝试解决性问题,与一个庞大而复杂的tomcat java网应用程序。最大的问题是,有时存储器中使用高峰和应用程序变得无法响应。我一定尽我所能解决与登录分析器和贝叶斯分析的记录文件。我正在考虑运行的探查生产tomcat服务器。

注意到读者与温和的敏感性:

我的理解是,一些可以找到这一概念的分析生产应用程序的进攻。请放心,我已经用尽了大多数其他的选择。原因我正在考虑这个是我做的没有资源来完全重复我们的生产设置在我的测试服务器,并且我已经不能导致失败的兴趣,在我的测试服务器。

问题:

我要寻找的答案其工作的一java的网上运行的应用程序tomcat,或者回答这个问题,在语言无关的方式。

  • 什么是业绩成本的分析?
  • 任何其他原因为什么它是一个糟糕的想法远程连接和档案网应用程序在生产(很奇怪的故障模式、安全问题,等等)?
  • 多少分析的效果存储器的脚印?
  • 具体地说是有java分析工具,具有非常性能低的成本?
  • 任何java分析工具,设计用于分析网络的应用程序?
  • 任何人都不会有标准的业绩成本的分析与visualVM?
  • 什么尺寸的应用程序和数据集可以visualVM规模?
有帮助吗?

解决方案

和其祖先 DPCI 制定了用于分析生产系统。开销为这些是非常低,他们你的档案 完整的系统, 包括核心,所以你可以找到业绩问题虚拟机 在核心和图书馆。

来回答你的问题:

  1. 开销: 这些都是 取样 分析仪,那就是,它们产生或计时器 业绩计数 中断,在某些固定时间间隔,并且他们看看什么代码目前执行。他们使用,建立一个柱状图的你花费你的时间,并且开销很低(1%至8%是什么 他们要求)为合理的采样间隔时间。

    看看 这个图 的取样频率与开销它.你可以调取样频率较低的开销,如果违约是不是你喜欢的。

  2. 使用的生产: 唯一要注意使用它是,你会需要它安装在你的生产机。我相信有核支持在红帽子因为RHEL3,我敢肯定其他分配支持它。

  3. 存储器: 我不确定什么样的确切内存占用它,但我认为,它保持相对较小的缓冲区和周围堆放他们的日志的文件。

  4. Java: 它包括分析药剂,支持Java和意识到运行的代码在他.这样你就可以看到Java电话,而不仅仅是C呼吁在翻译和JIT。

  5. 网络应用程序: 它是一个系统级分析器,所以它不知道的事情像会议,交易,等等。这一网络应用程序。

    这就是说,它是一个 全系统 探查,所以,如果你的表现问题是由不良之间的相互作用的操作系统和准,或者如果它在某些第三方图书馆,你就可以看到,由于它的配置文件的核心和图书馆。这是一个优势的生产系统,因为你能抓住问题,由于错误配置或细节生产的环境可能不存在你的测试环境。

  6. VisualVM: 不知道这一个,因为我没有经验VisualVM

这里的 一教程 在使用它找到业绩的瓶颈。

其他提示

我用YourKit来轮廓的应用程序在一个高负荷生产的环境,并同时有一定的影响,这是很容易地接受一种。Yourkit 使得一个大问题 能够这样做在一种非侵入性的方式,例如有选择地关闭某些分析功能更加昂贵的(这是一个滑动的规模,真的).

我最喜欢的方面是,你可以跑的虚拟机与YourKit剂的运行,它有零业绩的影响。只有当你连接GUI,并开始分析它有效果。

没有什么是错误的分析生产应用程序。如果你的工作上分发的应用程序,有些时候,一个内存异常发生在一个非常独特的概率的方案,这是非常困难重现在dev/阶段/uat环境。

你可以尝试使用定义的分析器,但是如果你是在赶时间和堵塞在/设置upa的探查生产框需要时间,你还可以使用jvm采取存储器转储(jvm转储存也给了你线dump)

  1. 你可以启动自动产生上JVM命令行,通过使用以下选择:-XX:+HeapDumpOnOutOfMemoryError

  2. 他蚀存分析项目有一个非常强大的功能,称为"集团通过价值",它使得能够建立一个对象查询和重新组合的实例,通过一领域的价值。这是非常有用的情况下,你有很多实例都包含一个小组的可能值,并可以看到其价值观正在使用的大多数。这真的帮了我了解了一些复杂的内存垃圾场所以我建议你尝试。

你也可以考虑采用一种现代的热点JVM Java飞行记录器和 Java特派团控制.它是一套工具,该工具允许收集低级运行时信息与CPU开销约为5%(我无法证明的最后一句话无论如何,这是发言的Oracle工程师提出的特征和现场演示).

你可以用这种工具只应用程序运行 1_7u40 JVM或更高。启用对运行信息收集,你需要开始JVM与特定标志:

默认情况下,JFR是残疾人在JVM。使JFR,则必须启动Java应用程序 -XX:+FlightRecorder 选项。因为JFR是一个商业功能,只能在该商业软件包的基础上Java平台,标准版(Oracle Java SE先进和Oracle Java SE套),还必须使商业功能的使用 -XX:+UnlockCommercialFeatures 选项。

(引述 http://docs.oracle.com/javase/8/docs/technotes/guides/jfr/about.html#sthref7)

我加入这个答案,因为这是可行的选择,用于分析在生产国际海事组织。

还有一个 日食插件 支持JFR和联合军委会和能够显示信息的用户友好。

该工具已经大大改进多年。这些天来,大多数人都需要像这些使用一种工具,挂钩爪哇的仪器API而不是分析API.当然也有很多例子,但是 NewRelic 来考虑。仪器仪表为基础的解决方案的通常运行作为代理人在JVM和不断收集数据。他们报告的数据在一个更高的水平(商业交易,网交易、数据库事务)比旧的分析方法和能让你更深入地(下来的方法或线)如果必要的。你甚至可以设置监测和预警,这样你就可以跟踪/报警指标,如网页载时间和绩效的Sla。与这些伟大的工具,你真的应该没有理由运行的探查生产的任何更长的时间。成本的运行,它们是可以忽略不计。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top