我有一个在统一的java进程网格上运行的应用程序(可能在不同的物理机器上)。我想从这个应用程序的单次运行中收集cpu使用情况统计信息。我已经查找了分析工具,寻找自动收集数据的选项,但未能在netbeans,tptp,jvisualvm,yourkit等中找到。
也许我的看法不对?
我在想的是:
但我找不到任何与此类似的东西。
任何想法,经验,建议?
谢谢!
答案 0 :(得分:3)
如果您允许远程JMX访问,并且如果您使用的是SUN JDK 1.6,请尝试使用jvisualvm。它可以选择远程JMX连接。虽然我没有用它在分布式环境中分析CPU。
注意:对于 CPU性能分析 ,您的应用应该在SUN JDK 1.6或更高版本上运行。
看看这些链接:
答案 1 :(得分:1)
如果你看一下像zabbix这样的东西(虽然有很多其他的监控工具),这允许从Java应用程序通过JMX收集数据。如果您在应用程序中启用JMX并允许在外部查询(通过TCP / IP),您将可以访问许多热点内部(可用内存等)以及线程堆栈等。然后您可以将这些值绘制为好。它确实需要配置,但你想要的是不能用一行脚本来完成。
答案 2 :(得分:1)
只是要添加每个节点上的分析信息通常包含时间戳。
要匹配这些时间戳,所有机器应具有完全相同的时间(最大10毫米三角洲)
群集节点应与单源网络时间服务器(NTP)同步
答案 3 :(得分:1)
您可以使用某些JMX库,例如jmxterm并将其包含在一些代码中以连接到多个主机并对其进行轮询以进行更改。如果你熟悉Python,请在这里查看mys简单脚本以获得灵感:http://rostislav-matl.blogspot.com/2011/02/monitoring-tomcat-with-jmxterm.html。
答案 4 :(得分:1)
我已使用CA Introscope进行此类监控。它使用Instrumentation随时间收集指标。例如,它可以配置为为您提供所有节点及其性能随时间变化的视图。从该节点视图中,您可以深入到方法级别,以帮助您确定瓶颈的位置。
是的,它将提供CPU利用率。
这是一个商业化的$$$工具,但它是收集,监控和查询性能数据的绝佳工具。
答案 5 :(得分:0)
http://www.hyperic.com/products/open-source-systems-monitoring
我从未尝试过其他答案中提到的其他工具。我对hyperic非常满意。 它还公开了webservices API,您可以使用它来编写自己的分析工具。
答案 6 :(得分:0)
如果您知道要分析的关键路径,我建议您在关键位置为您的流程添加时间戳,并自行组合日志。这可能是您的分析的有用补充,可以在生产中使用,因此可能更有用。 (这是我的项目)
我已经使用YourKit一次监控多个进程。它可以实时显示每个实时情况,并在完成后收集结果。
我不知道它是否提供了正在发生的事情的综合视图。
答案 7 :(得分:0)
我正在寻找类似的东西并找到Hyperic
声明是该工具可以监控大多数常见应用程序和系统,收集所有信息并以一种方便的方式呈现它们。
说实话,这是我的待办事项列表,所以我不能说它是否会完成这项工作。无论如何,它似乎令人印象深刻。