在生产服务器上启用jmx(lambda probe)是个好主意吗?

时间:2008-11-24 09:14:10

标签: java performance security tomcat jmx

我们在Sun VM 1.5.0_06-b05上运行的Tomcat 5.5.17上部署的Web应用程序出现了一些减速,我们的托管公司没有提供足够的数据来查找问题。

我们正在考虑在生产服务器上安装lambda probe,但它需要启用JMX(com.sun.management.jmxremote)才能获取内存和CPU统计信息。

启用JMX会导致严重的性能损失吗?

如果我们启用JMX,我们是否会打开任何安全漏洞?如果我们只启用对JMX的本地访问,是否需要设置安全身份验证?

是否有人使用相同的(tomcat + lambda探针)在生产中没有问题?

更新

看看答案似乎单独启用JMX不会给VM带来很大的开销。如果连接到VM的监视应用程序,无论是 JConsole lambda探测器还是其他任何一个,都会以过度的奉献精神进行轮询,这可能会带来额外的工作。

5 个答案:

答案 0 :(得分:17)

您可以使用安全身份验证来消除安全漏洞。只是保持JMX服务准备就绪不会产生任何重大开销,通常是一个好主意。有一个关于此的基准here

答案 1 :(得分:6)

JMX的开销很低,您可以通过SSL和身份验证来修复安全性。设置-Dcom.sun.management.jmxremote.ssl = true和-Dcom.sun.management.jmxremote.authenticate = true

有关设置证书等的详细信息,请参阅此处here

当您开始检测代码时,开销就成了问题。开销可能很大,并且检测可能会影响应用程序的行为。你不会看到你得到的东西,即所谓的heisenberg effect

如果您想要低开销,我会使用JRockit附带的工具。他们捎带JVM一直收集的信息。 JVM会统计哪些方法运行最多,以确定应优化哪些方法。 JVM还会跟踪内存使用情况/模式,以决定选择哪种gc-stategy。 JRockit将这种类型的数据暴露给JRockit工具,而不会增加通常从单独的JMVTI - 代理获得的检测开销。

答案 2 :(得分:3)

JMX只是一个等待连接的套接字,允许外部进程访问收集的数据。惩罚通常是非常低的(当然,除非你用JMX服务器发出请求)。

JMX允许您了解Java VM的内容。有命令可以运行GC并将其关闭。也就是说,JMX提供了一种使用公钥和身份验证的安全连接模式。请阅读文档了解详情。

答案 3 :(得分:2)

我们在生产服务器中使用lambda探针,但我们没有看到任何重大开销。我可以推荐使用探针作为可靠的产品(Tomcats 5.5和6.0,JDK 5和JDK 6)。

答案 4 :(得分:0)

这取决于JMX实现以及您想要监控的内容有多昂贵。 我现在至少有一个JMX应用程序,它具有相对较高的内存开销。