1. 系统级基础监控(快速查看资源占用)
在Debian系统中,可通过系统自带命令快速了解Java进程的资源使用情况:
top/htop:实时显示系统进程的CPU、内存占用。运行top后按/键搜索Java进程名称(如java),或使用htop(需安装:sudo apt install htop)获得更直观的界面,支持颜色标识和快捷操作。ps:查看Java进程的详细信息,如ps -ef | grep java可列出所有Java进程的PID、启动命令及运行时间。systemctl:若Java应用以systemd服务运行(如your-java-service.service),可通过systemctl status your-java-service.service查看服务状态、启动时间、日志摘要及资源限制。2. JDK自带工具(深度JVM监控)
JDK提供的工具可直接监控JVM内部状态,无需额外安装第三方库:
jps:列出当前系统的Java进程ID及主类名,用法为jps -l(-l显示主类全名),快速定位需要监控的Java进程。jstat:监控JVM垃圾回收(GC)、类加载、JIT编译等性能指标。常用命令如jstat -gcutil <pid> 1000(每秒刷新一次,显示堆内存各区域使用率、GC次数及耗时)、jstat -class <pid>(查看类加载/卸载数量)。jstack:生成Java线程的堆栈跟踪,用于分析线程阻塞、死锁等问题。用法为jstack <pid> > thread_dump.txt(将输出保存到文件便于分析)。jmap:生成Java堆转储快照(Heap Dump),用于分析内存泄漏。用法为jmap -dump:format=b,file=heapDump.hprof <pid>(format=b表示二进制格式,file指定保存路径)。jconsole:图形化工具,集成内存、线程、类加载、CPU监控功能。启动命令为jconsole,选择目标Java进程后即可查看实时数据(如堆内存使用曲线、线程活跃数)。VisualVM:功能更强大的图形化工具,支持插件扩展(如Visual GC插件查看GC详情)。安装命令为sudo apt install visualvm,启动后通过“本地进程”或远程连接(需配置JMX)监控Java应用。3. JMX远程监控(跨主机/生产环境必备)
若需远程监控Java应用(如生产环境服务器),需通过JMX(Java Management Extensions)暴露监控接口:
<port>为自定义端口,如9010):java -Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=<port> \
-Dcom.sun.management.jmxremote.authenticate=false \ # 生产环境建议开启认证
-Dcom.sun.management.jmxremote.ssl=false \ # 生产环境建议开启SSL
-jar your-application.jar
jconsole、VisualVM或第三方工具(如Prometheus+JMX Exporter)连接到<服务器IP>:<port>,即可远程查看JVM指标(如内存使用、线程数、GC情况)。4. 第三方监控工具(生产环境推荐)
对于复杂的生产环境,建议使用专业监控工具实现长期、自动化的监控与报警:
5. 数据库连接池监控(可选,针对数据库密集型应用)
若Java应用使用数据库连接池(如Druid),可开启其内置监控功能,查看SQL执行统计、连接池状态等:
application.properties中添加:spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
http://<服务器IP>:<端口>/druid(默认用户名/密码为admin),即可查看SQL执行次数、执行时间、连接池活跃连接数等指标。