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

2022-09-01 19:13:31

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

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

启用 JMX 是否会造成严重的性能损失?

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

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

更新

从答案来看,仅启用 JMX 似乎不会给 VM 带来显著的开销。如果附加到 VM 的监视应用程序(无论是 JConsolelambda 探测器还是任何其他应用程序)以过多的专注力进行轮询,则可能会产生额外的工作。


答案 1

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


答案 2

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

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

当您开始检测代码时,开销成为一个问题。开销可能很大,检测可能会影响应用程序的行为。你不会看到你得到的,所谓的海森堡效应

如果你想要低开销,我会使用JRockit附带的工具。他们一直背负着JVM收集的信息。JVM 会统计哪些方法运行得最多,以决定应该优化哪些方法。JVM 还会跟踪内存使用情况/模式,以决定选择哪个 gc 状态。JRockit 将此类数据公开给 JRockit 工具,而不会增加通常从单独的 JMVTI 代理获得的检测开销。