温馨提示×

centos如何调试java应用

小樊
33
2026-09-05 21:08:24
栏目: 编程语言

在 CentOS 上调试 Java 应用,常见方式包括日志排查、本地/远程 Debug、性能与线程分析、JVM 工具等。下面按实用场景给你一个系统性的指南。


一、基础准备

1. 确认 Java 环境

java -version
which java
echo $JAVA_HOME

如未安装:

yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

二、查看应用运行状态

1. 查看 Java 进程

ps -ef | grep java
jps -l

2. 查看端口与连接

netstat -tunlp | grep java
ss -tunlp | grep java

三、日志调试(最常用)

1. 查看应用日志

tail -f /var/log/yourapp/app.log

2. 查看系统日志

journalctl -u yourapp.service -f

3. 常见日志框架

  • Log4j / Logback
  • 调整日志级别(DEBUG):
<root level="DEBUG">

四、使用 IDE 远程调试(强烈推荐)

1. 启动 Java 应用时开启 Debug

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar app.jar

CentOS 7+ 注意防火墙

firewall-cmd --add-port=5005/tcp --permanent
firewall-cmd --reload

2. IntelliJ / Eclipse 配置

  • Host: CentOS IP
  • Port: 5005
  • 使用 Remote JVM Debug

五、JDK 自带调试工具(非常关键)

1. jstack(线程 & 死锁)

jstack <pid>

重点看:

  • BLOCKED
  • deadlock
  • 线程池耗尽

2. jmap(内存 & OOM)

jmap -heap <pid>
jmap -histo <pid> | head
jmap -dump:live,format=b,file=heap.hprof <pid>

用 MAT / VisualVM 分析 heap.hprof

3. jstat(GC 监控)

jstat -gcutil <pid> 1000

关注:

  • FGCT / FGCC(Full GC)
  • O(老年代)

六、Arthas(线上调试神器)

安装

curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar

常用命令

dashboard
thread
watch com.xxx.Service method params
trace com.xxx.Service method

✅ 不改代码、不停机


七、性能与 CPU 问题

1. 高 CPU 排查

top -Hp <pid>

把线程 ID 转 16 进制:

printf "%x\n" <tid>
jstack <pid> | grep <hex>

2. 使用 async-profiler

./profiler.sh -d 30 -f flamegraph.html <pid>

八、常见故障速查表

问题 排查方式
应用启动失败 看日志、jps、端口
卡死 jstack
内存溢出 jmap + MAT
响应慢 arthas trace
CPU 高 top + jstack
配置不生效 确认启动参数、环境变量

九、生产环境建议

  • ✅ 开启 GC 日志
  • ✅ 预留 Debug 端口(或 Arthas)
  • ✅ 使用 systemd 管理
  • ❌ 不建议生产长期开 suspend=y

如果你愿意,可以告诉我:

  • CentOS 版本
  • Java 版本
  • 应用类型(Spring / 普通 jar / Tomcat)
  • 具体问题(启动失败 / OOM / 卡死)

我可以直接给你针对性命令

0