哪些 DTrace 脚本值得在 Solaris 上测试和分析 Java 程序
Posted
技术标签:
【中文标题】哪些 DTrace 脚本值得在 Solaris 上测试和分析 Java 程序【英文标题】:What DTrace scripts makes it worthwhile to test and profile Java programs on Solaris 【发布时间】:2011-02-27 12:48:59 【问题描述】:我发现DTrace 很有趣,但我个人没有看到一个用例让我能够获得不使用 DTrace 否则无论如何都无法获得的信息。
因此,我想听听我忽略了什么。我可以在我的 vmware OpenIndiana build 148 上使用 DTrace 执行哪些操作,以在创建独立应用程序和 Java EE Web 应用程序(其中大部分使用套接字与旧式后端进行大量通信)时产生影响?
非常欢迎非平凡的 Dtrace 脚本。
【问题讨论】:
“不是一个真正的问题”?那我该怎么说呢? 【参考方案1】:我对 DTrace 有过一些很好的体验。
我有一个客户端在运行 24x7 的生产服务器上运行我们的 Java 代码。我们在应用程序中遇到了一些性能问题。为了附加分析器而停止 JVM 是不可能的。此外,在相同负载下,我们的实验室不存在这种行为。
我们使用 DTrace 和 JVM 相关的探针解决了这个问题,因为我可以将它附加到正在运行的 JVM,并且引入的开销很小(在 Netra T2000 SPARC 机器上为 1.3%)。
该方法的好处是所有调试都是通过拨号 (33kbps) 线路连接到客户实验室完成的。几乎不可能运行具有此约束的任何其他分析器/调试器(JDWP 对于此带宽非常冗长)。使用我的 DTrace 脚本,我只过滤了我感兴趣的内容。
有关一些提示,请参阅: http://java.dzone.com/articles/java-profiling-dtrace?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+javalobby/frontpage+(Javalobby+/+Java+Zone)
http://download.oracle.com/javase/6/docs/technotes/guides/vm/dtrace.html
我已经改编了这些脚本 http://blogs.oracle.com/ahl/date/20050418#dtracing_java
另一个重要优点是可以轻松用于创建自定义统计信息的汇总值。
但是,如果您有适当的条件,使用其他工具可以更轻松地完成所有工作。 DTrace 非常强大,但它针对更多裸机条件(也许 DLight 项目会有所帮助)。
【讨论】:
不太容易描述。这些申请是针对一家电信公司的。它们是事件驱动的 SIP 应用程序。第一个:SIP 会话保存在地图中。在繁重的负载下,由于新来电阻塞了对当前通话的 BYE 消息,因此有些通话永远不会结束。 DTrace 向我展示了比赛条件。第二:由于解析 SIP 消息,他们创建了大量的字符串对象。我发现了应用程序上的最热点,减少了字符串的创建并帮助了 GC。以上是关于哪些 DTrace 脚本值得在 Solaris 上测试和分析 Java 程序的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Dtrace 在 Solaris 10 上检查 malloc?
Oracle Solaris 上的 dtrace java API?