在 Debian 上优化 Java 性能,通常可以从系统层、JVM 层、应用层、监控调优四个维度来做。下面给你一个实用、可落地的优化清单。
# 查看系统资源限制
ulimit -a
# 增大文件描述符
/etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
systemctl list-unit-files --type=service
systemctl disable <无用服务>
apt install cpufrequtils
cpufreq-set -g performance
# ext4 示例
noatime,nodiratime
Temurin / Eclipse Adoptiumjava -version
| 场景 | 推荐 GC |
|---|---|
| 低延迟 | ZGC / Shenandoah |
| 高吞吐 | G1GC |
| 老系统 | Parallel GC |
示例(低延迟):
java -XX:+UseZGC -Xmx4g -Xms4g -jar app.jar
示例(通用):
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
-Xms2g -Xmx2g # 避免动态扩容
-XX:MetaspaceSize=256m
-XX:+UseContainerSupport
-XX:MaxRAMPercentage=75.0
maximumPoolSizeConcurrentHashMapsynchronized 大块代码jps
jstat -gc <pid>
jmap -heap <pid>
jstack <pid>
top
htop
vmstat 1
iostat -x 1
| 问题 | 可能原因 |
|---|---|
| CPU 高 | 死循环 / GC 频繁 |
| 内存涨 | 内存泄漏 |
| 卡顿 | Full GC |
| 响应慢 | 线程阻塞 / DB 慢 |
java \
-XX:+UseZGC \
-Xms4g -Xmx4g \
-XX:MaxRAMPercentage=75 \
-XX:+UseContainerSupport \
-XX:+HeapDumpOnOutOfMemoryError \
-jar app.jar
如果你愿意,可以告诉我:
我可以给你更精确的优化方案。