使用Firefox使用Firebug,我们从Tomcat Manager / Server Status中看到以下URL:
<a href="/manager/status?org.apache.catalina.filters.CSRF_NONCE=8EE95A7E3D6776DFEE4826EE3ED7ED9B">Server Status</a>
或者我们看到旧服务器:
<a href="/manager/status">Server Status</a>
在结果页面上,我们看到,例如:
可用内存:656.61 MB总内存:1979.75 MB最大内存:1979.75 MB
从Tomcat的bin文件夹中查看批处理文件,我们看到一些有趣的东西在命令行中运行良好。
"%JAVA_HOME%\bin\java" -classpath "%CATALINA_HOME%\lib\catalina.jar" org.apache.catalina.util.ServerInfo
这很有效..
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下的“http://localhost/manager/status”,如果低于某个级别则警告我们。我们确实看到了这个文件:/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>
我们真正想要查询的是:“免费”。
然而,我们有点卡住了。
"%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.
明白,我们可以安装YourKit或其他类似工具,但我们没有灵活性在这些prod服务器上安装。
答案 0 :(得分:1)
您应该使用JMX,而不是尝试抓取状态页。
对于测试(不安全的访问),您可以在启动Tomcat时通过添加以下内容来启用JMX:
-Dcom.sun.management.jmxremote.port=8000
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
如果从命令行启动Tomcat,可以通过设置CATALINA_OPTS
环境变量来给出这些。
使用jconsole
检查Java和Tomcat提供的所有JMX值。你正在寻找这个:
java.lang
Memory
Attributes
HeapMemoryUsage
如果您设置的用户具有manager-jmx
角色,您也可以使用以下网址从Tomcat获取这些内容:
http://localhost:8080/manager/jmxproxy?get=java.lang:type=Memory&att=HeapMemoryUsage
在这两种情况下,您都会找到4个值,例如:
committed 719323136
init 536870912
max 1908932608
used 409566448
答案 1 :(得分:0)