gpt4 book ai didi

java - 从 Tomcat Manager 获取 JVM 信息

转载 作者:行者123 更新时间:2023-11-28 22:18:06 25 4
gpt4 key购买 nike

在 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.

我想做的是从以下位置定期抽样:

"http://localhost/manager/status "在 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>

我们真正要查询的是:“免费”。

但是,我们有点卡住了。

"%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 或其他类似工具,但我们没有在这些产品服务器上安装的灵 active 。

最佳答案

与其尝试抓取状态页面,不如使用 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 角色的用户,您也可以使用以下 URL 从 Tomcat 获取这些:

http://localhost:8080/manager/jmxproxy?get=java.lang:type=Memory&att=HeapMemoryUsage

在这两种情况下,您都会找到 4 个值,例如:

committed   719323136
init 536870912
max 1908932608
used 409566448

关于java - 从 Tomcat Manager 获取 JVM 信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36090693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com