1. 使用JDK自带命令行工具(基础监控)
JDK自带的命令行工具是Debian系统监控Java应用的基础工具,无需额外安装,适合快速排查问题。
ps -aux | grep java,命令:jps -l(显示进程ID及主类名)。jstat -gcutil <PID> 1000(<PID>替换为Java进程ID)。jstack <PID> > thread_dump.log(将输出保存到文件便于分析)。jmap -dump:format=b,file=heap.hprof <PID>(heap.hprof为堆转储文件)。localhost:<JMX端口>(需提前开启JMX,见下文)即可连接。2. 启用JMX远程监控(远程管理)
若需远程监控Debian上的Java应用,需通过JMX(Java Management Extensions)暴露指标。启动应用时添加以下JVM参数(替换端口为实际值,如9010):
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9010
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
参数说明:jmxremote启用JMX;port指定远程连接端口;authenticate=false关闭认证(生产环境建议开启);ssl=false关闭SSL(生产环境建议开启)。连接工具可选择jconsole、VisualVM或第三方工具(如Prometheus的JMX Exporter)。
3. 使用图形化工具VisualVM(综合监控)
VisualVM是JDK集成的免费图形化工具,支持本地/远程监控,功能涵盖内存、线程、CPU、类加载、GC等。
apt安装(部分版本可能未包含,建议手动下载):sudo apt install visualvm
localhost:9010),即可查看实时监控数据。高级功能包括生成堆转储、线程分析、查看GC日志等。4. 集成Spring Boot Actuator(Spring应用专用)
若应用基于Spring Boot,可通过Actuator暴露性能端点,结合Prometheus+Grafana实现可视化监控。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
application.properties):开启所有指标端点:management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
prometheus.yml)中添加抓取任务:scrape_configs:
- job_name: 'spring-boot-app'
static_configs:
- targets: ['localhost:8080'] # Spring Boot应用端口
5. 使用Prometheus+Grafana(分布式监控)
Prometheus是开源监控系统,Grafana是可视化工具,适合监控分布式Java应用。
sudo apt install zlib1g-dev uuid-dev libmnl-dev pkg-config curl gcc make autoconf autoconf-archive autogen automake python python-yaml python-mysqldb nodejs lm-sensors python-psycopg2 netcat git -y
git clone https://github.com/firehol/netdata.git --depth 1 /netdata
cd /netdata
sudo ./netdata-installer.sh
sudo systemctl start netdata
sudo systemctl enable netdata
访问http://<服务器IP>:19999查看系统监控。jmx_prometheus_javaagent并配置)。6. 使用APM工具(深度性能分析)
APM(应用性能管理)工具提供端到端的性能监控,适合复杂分布式系统。
-javaagent:/path/to/glowroot.jar
启动后访问http://<服务器IP>:4000查看监控数据(支持内存、CPU、事务追踪)。7. 日志分析与ELK Stack(问题溯源)
通过日志分析可定位性能瓶颈(如慢查询、异常),ELK(Elasticsearch+Logstash+Kibana)是常用日志管理工具。
<logger name="com.example.PerformanceLogger" level="DEBUG" additivity="false">
<appender-ref ref="FILE"/>
</logger>