Debian系统下Tomcat性能监控的常用方法
通过Debian自带的命令行工具可快速查看Tomcat进程的资源占用及系统状态,适合日常快速检查:
top -p $(pidof tomcat) 或 htop -p $(pidof tomcat) 实时查看Tomcat进程的CPU、内存使用率;htop需提前安装(apt install htop),提供更直观的交互界面。vmstat 1 5 监控系统整体资源(CPU、内存、磁盘I/O、进程),每1秒刷新一次,共5次,帮助定位系统级瓶颈。netstat -tuln | grep 8080 或 ss -tuln | grep 8080 查看Tomcat监听端口(默认8080)的状态;netstat -anp | grep 8080 | wc -l 统计当前连接数。free -m 查看内存使用情况(总内存、已用、空闲);df -h 查看磁盘空间占用,避免因磁盘满导致性能下降。JMX是Java标准性能监控接口,可深度监控Tomcat的JVM、线程、内存等指标:
bin/catalina.sh文件,在JAVA_OPTS中添加以下参数(替换your_server_ip为实际IP):CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=your_server_ip -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
重启Tomcat使配置生效:systemctl restart tomcat(或/opt/tomcat/bin/shutdown.sh && /opt/tomcat/bin/startup.sh)。jconsole(jconsole命令)或VisualVM(visualvm命令),选择“远程进程”,输入service:jmx:rmi:///jndi/rmi://your_server_ip:1099/jmxrmi即可连接,实时查看各项指标。JavaMelody是针对Java应用的监控工具,配置简单,适合快速部署:
<dependency>
<groupId>net.bull.javamelody</groupId>
<artifactId>javamelody-core</artifactId>
<version>1.98.0</version>
</dependency>
web.xml:<filter>
<filter-name>javamelody</filter-name>
<filter-class>net.bull.javamelody.MonitoringFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>javamelody</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>net.bull.javamelody.SessionListener</listener-class>
</listener>
http://localhost:8080/monitoring(默认用户名/密码为admin)。适合需要自定义告警和丰富可视化的场景:
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient</artifactId>
<version>0.16.0</version>
</dependency>
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient_servlet</artifactId>
<version>0.16.0</version>
</dependency>
web.xml注册Metrics Servlet:<servlet>
<servlet-name>MetricsServlet</servlet-name>
<servlet-class>io.prometheus.client.servlet.MetricsServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MetricsServlet</servlet-name>
<url-pattern>/metrics</url-pattern>
</servlet-mapping>
prometheus.yml):scrape_configs:
- job_name: 'tomcat'
metrics_path: '/metrics'
static_configs:
- targets: ['localhost:8080']
专为Tomcat设计的实时监控工具,部署便捷:
probe.war文件(从官方网站),放入Tomcat的webapps目录,启动Tomcat后访问http://localhost:8080/probe(默认用户名/密码为admin)。通过日志可追踪Tomcat运行状态及异常信息:
tail -f /opt/tomcat/logs/catalina.out(默认日志路径)实时查看启动及运行日志。grep、awk等工具提取关键信息,如统计错误日志数量:grep -c "ERROR" /opt/tomcat/logs/catalina.out
通过Shell脚本实现自动化监控与告警,适合定制化需求:
#!/bin/bash
TOMCAT_PID=$(ps -ef | grep tomcat | grep -v 'grep' | awk '{print $2}')
TOMCAT_PORT=8080
if [ -z "$TOMCAT_PID" ]; then
echo "$(date): Tomcat进程不存在,正在重启..." >> /var/log/tomcat_monitor.log
systemctl restart tomcat
else
CONNECTIONS=$(netstat -anp | grep $TOMCAT_PORT | wc -l)
if [ $CONNECTIONS -gt 1000 ]; then
echo "$(date): Tomcat连接数超过1000,当前连接数:$CONNECTIONS" >> /var/log/tomcat_monitor.log
fi
fi
echo "* * * * * /path/to/tomcat_monitor.sh" | crontab -