Tomcat7查看JVM内存使用情况

本文介绍如何配置Tomcat使其仅运行单个应用,并调整访问路径。同时,详细说明了如何配置Tomcat状态监控及调整JVM内存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当时为让tomcat仅跑一个工程,通过路径http://127.0.0.1:8080/ 直接访问工程,在conf/server.xml配置host时候,仅指定具体工程:

<Host name="localhost"  appBase="webapps/demo "

            unpackWARs="true" autoDeploy="true">

        <Context docBase="." path="" />

但是Tomcat默认的项目(webapps目录除了demo)则都不能运行,也就不能进入Tomcat管理界面.

 

根据上面的情况,修改(默认就这配置)

<Host name="localhost"  appBase="webapps/demo "

            unpackWARs="true" autoDeploy="true">

        <Context docBase="." path="" />

删除线部分去掉。

 

补充下:

因为用Apache负载均衡,还要修改apache配置文件:

 

<Proxy balancer://demo-cluster/>

 BalancerMember http://127.0.0.1:8080/

BalancerMember http://127.0.0.1:8080/demo/

</Proxy>

 

这样可以访问Tomcat的webapps中所有工程。

其他工程访问路径也改变,端口后面加工程名,比如demo工程的URL:http://127.0.0.1:8080/demo

进入默认欢迎界面http://127.0.0.1:8080/,有关于tomcat很多信息,红色箭头指向tomcat状态链接:


(tomcat新界面;清晰,漂亮)

 

查看tomcat状态需要权限,配置在conf/tomcat-users.xml。

新版tomcat采用新的管理权限,下面列出所有权限:

 

Xml代码   收藏代码
  1. <role rolename="manager-gui"/>  
  2. <role rolename="manager-script"/>  
  3. <role rolename="manager-jmx"/>  
  4. <role rolename="manager-status"/>  
  5. <user username="manage1" password="s3cret" roles="manager-gui"/>  
  6. <user username="manage2" password="s3cret" roles="manager-script"/>  
  7. <user username="manage3" password="s3cret" roles="manager-jmx"/>  
  8. <user username="manage4" password="s3cret" roles="manager-status"/>  
  9.    
  10. <role rolename="admin-gui"/>  
  11. <role rolename="admin-script"/>  
  12. <user username="admin1" password="s3cret" roles="admin-gui"/>  
  13. <user username="admin2" password="s3cret" roles="admin-script"/>  

一般选择gui的两个权限即可,manager-gui和admin-gui。

 

Xml代码   收藏代码
  1. <user username="admin" password="s3cret" roles="admin-gui,manager-gui"/>  

用帐户admin和密码s3cret登录,查看当前tomcat的运行状态,下面给出的是jvm信息:

JVM                                                    

 

Free memory: 621.24 MB Total memory: 720.00 MB Max memory: 720.00 MB

Free memory:当前可用的内存;

Total memory:当前已经分配的JVM内存;

Max memory:当前允许分配的最大JVM内存;

 

可以调整tomcat内存大小以适应自己的环境,在tomcat\bin\catalina.bat中添加

set JAVA_OPTS=-server -Xms768m -Xmx768m -XX:MaxNewSize=384m -XX:MaxPermSize=256m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:logs/gc.log

 

注意:参数设置则需要用startup.bat方式启动。

 

其实这样是加载多个工程,在访问时候url会带有工程名,解决此问题需要配置tomcat虚拟机http://mysoko.iteye.com/blog/969630

<think>我们正在回答用户的问题:如何监控 Tomcat 应用服务器的 JVM 内存使用情况。 根据用户提供的引用,我们可以总结出以下几种监控方法: 1. 使用 JMX 监控(引用[1]提到) 2. 通过 Tomcat 的管理界面(引用[4]提到) 3. 使用命令行工具(如jstat、jps等,但引用中没有直接提到,但属于常见方法,可补充) 4. 配置GC日志(引用[2]提到垃圾回收策略,可以延伸出通过GC日志分析内存使用) 注意:用户特别提到要参考站内引用,因此我们尽量使用引用中的方法,并适当补充常见方法。 另外,用户的问题中引用了四篇文献,其中: 引用[1]:使用JMX监控JVM内存 引用[2]:关于TomcatJVM设置建议 引用[3]:Linux下修改Tomcat内存的方法(但用户当前问题不涉及修改,而是监控) 引用[4]:通过Tomcat的管理界面(manager/status)查看内存使用情况 因此,我们的回答将重点围绕引用[1]和[4]展开,同时补充其他常用方法。 回答结构: 1. 使用Tomcat管理界面(Web界面) 2. 使用JMX远程监控 3. 使用命令行工具(jconsole, jvisualvm, jstat等) 4. 分析GC日志 5. 使用监控工具(如Prometheus+Grafana等,但引用中未提及,可简要提) 注意:由于引用[4]中提供了通过manager/status查看的方法,我们将详细描述配置步骤。 同时,根据用户之前的提问(调整Tomcat JVM内存参数),我们可以将监控作为后续调优的依据,因此监控方法要实用。 最后,生成相关问题。</think>### 如何监控 TomcatJVM 内存使用情况 监控 TomcatJVM 内存使用是性能调优和故障排查的关键步骤,以下是几种常用方法: #### 1. **使用 Tomcat 管理界面(Web 控制台)** [^4] **配置步骤**: 1. 编辑 `$CATALINA_HOME/conf/tomcat-users.xml` 添加管理用户: ```xml <role rolename="manager-gui"/> <user username="admin" password="admin123" roles="manager-gui"/> ``` 2. 重启 Tomcat 后访问: ``` http://<服务器IP>:8080/manager/status ``` 3. 登录后查看 **JVM 内存**区域: - 堆内存(Heap) - 非堆内存(Non-Heap) - 详细的内存池使用情况 #### 2. **通过 JMX 远程监控** [^1] **配置方法**: 1. 在 `catalina.sh`/`catalina.bat` 添加 JMX 参数: ```bash JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false" ``` 2. 使用监控工具连接: - **JConsole**:运行 `jconsole` 连接 `IP:9010` - **VisualVM**:更强大的监控分析工具 - **监控指标**: - 堆内存使用曲线 - GC 频率和耗时 - 类加载数量 #### 3. **命令行工具监控** ```bash # 查看 Tomcat 进程 ID ps -ef | grep tomcat # 监控内存使用(每 2 秒刷新) jstat -gcutil <PID> 2000 # 输出示例 S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 0.00 100.00 68.12 30.25 94.12 85.24 15 0.123 2 0.456 0.579 ``` > **指标说明**: > - `E`:Eden 区使用率 > - `O`:老年代使用率 > - `YGC/FGC`:YoungGC/FullGC 次数 > - `GCT`:GC 总耗时 #### 4. **GC 日志分析** [^2] 在启动参数添加: ```bash JAVA_OPTS="$JAVA_OPTS -Xloggc:/path/to/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps" ``` 通过工具(如 [GCViewer](https://github.com/chewiebug/GCViewer))分析日志,识别内存泄漏和 GC 瓶颈。 #### 5. **APM 工具集成** - **Prometheus + Grafana**: 使用 [JMX Exporter](https://github.com/prometheus/jmx_exporter) 采集指标 - **Elastic APM**: 自动追踪 JVM 性能指标 - **商业工具**: Dynatrace、AppDynamics 等提供实时监控 > **最佳实践**: > 1. 生产环境建议同时启用 JMX 监控和 GC 日志 > 2. 设置内存阈值告警(如堆使用 > 80%) > 3. 定期分析内存趋势,预防 OOM[^2] --- ### 相关问题 1. **Tomcat 频繁 Full GC 可能是什么原因导致的?如何优化?** > 可能原因包括内存泄漏、堆空间不足或垃圾回收器配置不当。优化方法:分析堆转储文件、调整分代内存比例、更换垃圾回收器(如 G1)[^2]。 2. **如何配置 Tomcat内存溢出时自动生成堆转储文件?** > 添加 JVM 参数:`-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/dumps`[^2]。 3. **Tomcat 的元空间(Metaspace)持续增长可能是什么问题?** > 通常由类加载器泄漏或动态类生成(如反射、代理)引起。可通过 `jcmd <PID> GC.class_stats` 分析类加载情况[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值