Debian环境下Tomcat监控与故障排查指南
tomcat9),通过sudo systemctl status tomcat9可查看服务运行状态(是否active)、启动时间、最近日志片段等关键信息。top命令实时显示Tomcat进程的CPU、内存占用率(通过-p $(pgrep tomcat)过滤指定进程);htop(需安装)提供更直观的交互界面,支持排序和筛选。sudo netstat -tuln | grep 8080或sudo ss -tuln | grep 8080可确认端口是否处于监听状态,排查“无法访问”问题。/var/log/tomcat9/(版本不同路径可能变化),使用tail -f /var/log/tomcat9/catalina.out实时查看启动、运行日志,结合grep "ERROR"过滤错误信息。/opt/tomcat/bin/catalina.sh(Tomcat安装目录),在exec "$_RUNJAVA"前添加:CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8081 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"(替换8081为实际端口,生产环境建议开启SSL和认证)。jconsole(JDK自带)或jvisualvm,输入localhost:8081即可监控内存(堆/非堆)、线程池(活跃线程数)、请求响应时间等指标。javamelody.war到webapps目录,访问http://localhost:8080/javamelody查看性能报告(包括CPU、内存、会话数、SQL监控),支持邮件告警。jmx_prometheus_javaagent,配置tomcat.yml(定义监控指标),添加JVM参数-javaagent:/path/to/jmx_prometheus_javaagent.jar=8082:/path/to/tomcat.yml,通过Prometheus采集指标,Grafana制作可视化 dashboard。catalina.out(tail -f /var/log/tomcat9/catalina.out),常见错误包括端口冲突、配置文件语法错误、Java版本不兼容(如Tomcat 10需要Java 11+)。sudo lsof -i :8080查看占用端口的进程,若有冲突,kill -9 <PID>终止进程或修改server.xml中的<Connector port="8080">端口。server.xml(/etc/tomcat9/)中的<Connector>、<Host>配置,确保路径、端口正确;web.xml中的servlet映射无误。tomcat)对webapps、logs、work目录有读写权限(chown -R tomcat:tomcat /opt/tomcat)。ufw,允许8080端口:sudo ufw allow 8080/tcp,然后sudo ufw reload。curl http://localhost:8080测试,若正常则排查网络路由或外部防火墙;若失败,继续检查Tomcat是否启动(systemctl status tomcat9)。webapps目录是否有应用(如ROOT.war或文件夹),查看logs/localhost.<date>.log中的部署错误(如类缺失、配置错误)。catalina.sh中的CATALINA_OPTS,增加堆内存(如-Xms512m -Xmx1024m,初始512MB,最大1GB),避免默认内存不足。jmap -heap <PID>查看堆内存分布(如老年代占用过高),jmap -histo:live <PID>列出对象数量及大小(找出占用内存最多的类),jstat -gcutil <PID> 1000监控GC频率(频繁Full GC可能导致OOM)。Eclipse MAT分析jmap导出的堆转储文件(.hprof),定位泄漏源头。