我们在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的监视应用程序(无论是JConsole,lambda探测器还是其他任何程序)都过度投入,则可能会产生额外的工作.
您可以使用安全身份验证来消除安全漏洞.只是保持JMX服务准备就绪不会产生任何重大开销,通常是一个好主意.有一个标杆在这里这一点.
JMX的开销很低,您可以通过SSL和身份验证来修复安全性.设置-Dcom.sun.management.jmxremote.ssl = true和-Dcom.sun.management.jmxremote.authenticate = true
在这里看到这里,了解更多有关设置证书等.
当您开始检测代码时,开销就成了问题.开销可能很大,并且检测可能会影响应用程序的行为.你不会看到你得到的东西,即所谓的海森堡效应.
如果你想要低开销,我会使用JRockit附带的工具.他们捎带JVM一直收集的信息.JVM会统计哪些方法运行最多,以确定应该优化哪些方法.JVM还会跟踪内存使用情况/模式,以决定选择哪种gc-stategy.JRockit将这种类型的数据暴露给JRockit工具,而不会增加通常从单独的JMVTI -agent 获得的检测开销.