项目部署以后出行卡顿现象,所以对问题进行了排查,记录一下排查过程

(从CSDN编辑器贴过来的,图有水印)

1.找进程

top



可以发现,是Java进程导致的CPU过高,致使系统卡顿

2.找线程

ps -mp pid -o THREAD,tid,time



发现占比最大的线程

3.线程id转换16进制

printf "%x\n" pid



得到6a33,方便下一步排查

4.查询代码位置

jstack pid|grep tid -A 30



发现全是GC线程

5.查看gc频率

jstat -gcutil pid 时间间隔 打印次数



发现Eden很满,不断增长,GC次数过多

6.dump堆文件

jstack pid >>jstack.out



7.查找dump文件

find . -name "jstack.out"

这步可有可无,生成在当前目录





8.IBM Thread and Monitor Dump Analyzer for Java

可视化工具分析dump文件




查看结果还算正常

9.尝试调整JVM参数

查看JVM参数,发现默认才512m

查看系统总内存

cat /proc/meminfo查看linux系统内存大小的详细信息



发现总内存约64G

将-Xmx 最大堆内存设置为1024m,扩大一倍看看

重启服务发现GC频率明显下降,恢复正常,满足以下标准

如果各项参数设置合理,系统没有超时日志出现,GC频率不高,GC耗时不高,那么没有必要进行GC优化;如果GC时间超过1〜3 秒,或者频繁G C

,则必须优化。如果满足下面的指标,则一般不需要进行GC: ■ Minor GC执行时间不到50ms; ■ Minor

GC执行不频繁,约10秒一次; ■ Full GC执行时间不到1s; ■ Full GC执行频率不算频繁,不低于10分钟1次。

JVM 之 Linux定位CPU过高问题及优化的更多相关文章

  1. 【三板斧】Java定位CPU使用高问题

    [三板斧]Java定位CPU使用高问题 1.TOP命令,查询消耗CPU高的进程号 PID,并记录下来,按下键盘"H"键,记录高消耗线程号,并将改线程号转换为十六进制 2.使用 js ...

  2. 轻松定位CPU飙高问题

    以下四步轻松定位CPU飙高问题: ①top pid 查看cpu耗CPU进程 ②top -Hp pid 查看该进程所有线程的运行情况,找到占用 CPU 过高的线程 pid ③ printf %x pid ...

  3. (原创)性能测试中,Oracle服务器定位CPU使用率高的瓶颈(SQL)

    本篇博客记录一次性能测试过程中,定位对CPU使用率高的瓶颈问题,主要定位SQL为准 一.用SQL命令定位1.首先用TOP命令监控系统资源,如果是AIX系统,就用topas,进入TOP命令的滚动刷新数据 ...

  4. Linux下cpu过高问题排查

    原文地址:https://blog.csdn.net/chenjunan888/article/details/80447800 在服务器报cpu过高时,可使用以下命令,快速导出堆栈信息,以方便查看具 ...

  5. Java定位CPU使用高问题--转载

    原文地址:http://www.cnblogs.com/guoyuqiangf8/p/3545687.html 1.TOP命令,查询消耗CPU高的进程号 PID,并记录下来,按下键盘"H&q ...

  6. 【转载】查看Linux进程CPU过高具体的线程堆栈(不中断程序)

    具体的命令经常忘记,毕竟用的不是很多.为了避免去找备份一下 1.TOP命令,找到占用CPU最高的进程 $ top top - 20:11:45 up 850 days,  1:18,  3 users ...

  7. Oracle服务器定位CPU使用率高的瓶颈(SQL)

    1.首先用TOP命令监控系统资源,如果是AIX系统,就用topas,进入TOP命令的滚动刷新数据时,发现userCPU高达98%!! 保持top的状态下,按shift+p,可以将所有进程按CPU使用率 ...

  8. 查看Linux进程CPU过高具体的线程堆栈(不中断程序)

    转自:http://blog.csdn.net/mergerly/article/details/47731305 1.TOP命令,找到占用CPU最高的进程 $ top top - 20:11:45  ...

  9. linux查询cpu过高原因--java

    1. 查询java pid top -c 2. 查询java进程下,线程情况 top -Hp pid(threadIdList) 3. 将10进制线程id转为16进制 printf "%x ...

随机推荐

  1. vscode环境配置(一)——C Program运行

    ctrl + shift +p 打开应用商店 搜索 C/C++  和 Code Runner(一键编译运行)  

  2. Java——线程安全的集合

    线程安全的集合    java.util.concurrent包:ConcurrentHashMap,ConcurrentSkipListMap,ConcurrentSkipListSet,Concu ...

  3. Siemens PLC分类和基本性能指标

    PLC分类 整体式plc也成为单元式,特点是电源,中央处理器单元以及I/O借口都集成在一个机壳内. 标准摸板试结构化,也成为组合式,特点是电源,中央处理器单元模板以及I/O模板在结构上都是相互独立的, ...

  4. 阿里短信回持.net sdk的bug导致生产服务cpu 100%排查

    一:背景 1. 讲故事 去年阿里聚石塔上的所有isv短信通道全部对接阿里通信,我们就做了对接改造,使用阿里提供的.net sdk. 网址:https://help.aliyun.com/documen ...

  5. async/await 内幕【译文】

    C# Under the Hood: async/await 原文地址:https://www.markopapic.com/csharp-under-the-hood-async-await/ 前言 ...

  6. idea本地Maven仓库不能下载依赖jar包的解决方案

    1.确认maven是否正正常安装,是否配置了环境变量,可以通过命令 mvn -version 看是否显示maven的版本信息. 2.检查maven的setting.xml配置文件中本地仓库位置配置是否 ...

  7. 动态ip服务器 动态ip服务器的常用连接方式 收藏版

    动态ip服务器目前比较常用的是VPS也叫作虚拟机.目前比较小型的vps服务器与普通电脑没什么区别,最大的区别就是用户连接zhidao服务器内的ip是固定不变的.而服务器运行的ip是可以动态的. 实现动 ...

  8. prometheus配置pushgateway功能测试

    一.环境: 1.prometheus服务器ip:192.168.0.208 2.node-exporter客户机ip:192.168.0.202 二.测试设计考虑: pushgateway类似一台信息 ...

  9. xss(跨站脚本攻击)

    xss(跨站脚本攻击) 原理:攻击者可以通过在页面中注入恶意链接或者脚本代码,当受害者访问时,脚本代码会在其浏览器中执行,这个时候,我们可以获取当前用户的cookie或者进行重定向等操作. xss造成 ...

  10. zookeeper面试题分析

    1.什么是zookeeper? 1.zookeeper是一个分布式协调技术,是分布式数据一致性解决方案的典型代表,力求做到强一致性但最终实现的是最终一致性,采用CAP理论的AP,用来构建高可用分布式主 ...