Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从Tomcat管理器获取JVM信息_Java_Apache_Tomcat_Jvm - Fatal编程技术网

Java 从Tomcat管理器获取JVM信息

Java 从Tomcat管理器获取JVM信息,java,apache,tomcat,jvm,Java,Apache,Tomcat,Jvm,通过Firefox使用Firebug,我们可以从Tomcat管理器/服务器状态中看到以下URL: <a href="/manager/status?org.apache.catalina.filters.CSRF_NONCE=8EE95A7E3D6776DFEE4826EE3ED7ED9B">Server Status</a> 这很有效 Server version: Apache Tomcat/6.0.20 Server built: May 14 2009 01

通过Firefox使用Firebug,我们可以从Tomcat管理器/服务器状态中看到以下URL:

<a href="/manager/status?org.apache.catalina.filters.CSRF_NONCE=8EE95A7E3D6776DFEE4826EE3ED7ED9B">Server Status</a>
这很有效

Server version: Apache Tomcat/6.0.20
Server built:   May 14 2009 01:13:50
Server number:  6.0.20.0
OS Name:        Windows 2003 OS
Version:     5.2
Architecture:   x86
JVM Version:    1.6.0_17-b04 JVM
Vendor:     Sun Microsystems Inc.
我想做的是从以下地点定期取样:

“”在JVM下,如果低于某个级别,则向我们发出警告

我们确实看到了文件:/tomcat/webapps/manager/status.xsd

我们看到:

<xs:complexType name="jvm">
    <xs:sequence>
        <xs:element name="memory" type="memory"/>
    </xs:sequence>
</xs:complexType>
<xs:complexType name="memory">
    <xs:attribute name="free" type="xs:long" use="required"/>
    <xs:attribute name="total" type="xs:long" use="required"/>
    <xs:attribute name="max" type="xs:long" use="required"/>
</xs:complexType>
举个例子。这将返回:

D:\>"%JAVA_HOME%\bin\java" -classpath "%CATALINA_HOME%\lib\catalina.jar
" org.apache.catalina.util.ServerInfo.status
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/catalina/u
til/ServerInfo/status
Caused by: java.lang.ClassNotFoundException: org.apache.catalina.util.ServerInfo
.status
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:303)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
Could not find the main class: org.apache.catalina.util.ServerInfo.status.  Prog
ram will exit.
请理解,我们可以安装YourKit或其他类似工具,但我们没有在这些prod服务器上安装的灵活性。

请看:


如果我理解了您的问题,而不是试图刮状态页面,那么您应该使用JMX

对于测试(不安全访问),您可以通过在启动Tomcat时添加以下内容来启用JMX:

-Dcom.sun.management.jmxremote.port=8000
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
如果从命令行启动Tomcat,可以通过设置
CATALINA\u OPTS
环境变量来实现

使用
jconsole
检查Java和Tomcat提供的所有JMX值。您正在寻找这个:

java.lang
记忆
属性
HeapMemoryUsage
如果您使用
manager jmx
角色设置用户,也可以使用以下URL从Tomcat获取这些内容:

http://localhost:8080/manager/jmxproxy?get=java.lang:type=Memory&att=HeapMemoryUsage
在这两种情况下,您将发现4个值,例如:

719323136
初始化536870912
最大值1908932608
使用409566448

不太清楚。。我确实看到了纯文本版本,但真正想要的是:和JVM内存:“空闲内存”是我的目标。虚拟机信息,如内存堆统计数据,可以通过
/manager/text/vminfo
获得。以防万一有人真的想使用文本接口而不是JMX。。这样,“Free”应该是:Free=max used如果我的计算不正确,请纠正我。
<xs:complexType name="jvm">
    <xs:sequence>
        <xs:element name="memory" type="memory"/>
    </xs:sequence>
</xs:complexType>
<xs:complexType name="memory">
    <xs:attribute name="free" type="xs:long" use="required"/>
    <xs:attribute name="total" type="xs:long" use="required"/>
    <xs:attribute name="max" type="xs:long" use="required"/>
</xs:complexType>
"%JAVA_HOME%\bin\java" -classpath "%CATALINA_HOME%\lib\catalina.jar" org.apache.catalina.util.ServerInfo.status
D:\>"%JAVA_HOME%\bin\java" -classpath "%CATALINA_HOME%\lib\catalina.jar
" org.apache.catalina.util.ServerInfo.status
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/catalina/u
til/ServerInfo/status
Caused by: java.lang.ClassNotFoundException: org.apache.catalina.util.ServerInfo
.status
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:303)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
Could not find the main class: org.apache.catalina.util.ServerInfo.status.  Prog
ram will exit.