我想监视生产环境中的JVM性能。我只安装了JRE,而不是JDK,因此我不能使用jstat,jconsole等来监控JVM的性能。
有人可以帮助了解如何在这种情况下监控JVM性能吗?
有没有办法实现这个目标?
(请注意,我不想通过JMX或其他方式远程监控它。我想在每台机器上安装本地代理,它将以1分钟的间隔向服务器发送指标。)
谢谢, KS
答案 0 :(得分:1)
答案 1 :(得分:0)
如果你有足够的耐心和时间写作,你可以看看JVMTI。您可以使用C / C ++编写代码并沿着Java Process运行它,并且可以在不影响JVM的情况下收集有关JVM的信息。
另一个简单而天真的方法是使用java编写的javaagent启动VM,但JVMTI甚至比这更好。 javaagent和JVMTI应用程序之间最重要的区别来自加载机制。代理程序在堆内部加载时,它们由同一JVM控制。而JVMTI代理不受JVM规则的约束,因此不受JVM内部(如GC或运行时错误处理)的影响。
如果您使用的是JDK7或更高版本,您甚至可以尝试使用Java Mission Control:)
答案 2 :(得分:0)
Jolokia是一个java代理,可以用来将JMX公开为http。运行jmx2graphite并将这些指标纳入Graphite。该链接包含有关Graphite安装(10分钟)的说明