由JVM虚拟机配置问题引发的程序变慢

1. 发现Thred-pools前端请求线程池列表非常的慢

通过日志查看,判断是nacos连接不上
奇怪的是,通过nacos控制面板可以显示nacos信息

2. 在服务器上用top命令查看cpu占用率

一个java进程的cpu占用率超过600%;

  • ps -fp 11070
    • 查看此进程号对应的java服务的jar路径/或全类名;即通过进程号确定java服务
      image
  • 使用jstat -gcutil 11070 1000 5
    image
    • Eden区满,Old区满,FGC总数2万多次,5s内发生近20次
  • 使用 jstack 11070 > jstack.log 生成日志(内容太多,不太会分析)
部分 说明
sudo 以管理员权限运行(访问 JVM 进程需要权限)
jstat JDK 自带的 JVM 统计监控工具
-gcutil 显示垃圾回收和内存分代使用率的百分比
11217 目标 Java 进程的 PID
1000 采样间隔时间(毫秒)
5 采样次数

3. 发现JVM内存出现严重问题

-Xms128m # 堆最小128MB
-Xmx256m # 堆最大256MB
-Xmn512m # 新生代512MB → 比最大堆还大!
导致频繁的full GC

4. 重新调整nacos的JVM堆内存分配

-Xms1g -Xmx1g -Xmn512m

posted @ 2025-07-09 21:52  Biang-Biang  阅读(7)  评论(0)    收藏  举报