1.使用top查看CPU使用情况,发现用户为app的java进程CPU使用率近400%(4核CPU),记录下PID。(说明:系统恢复正常后的截图)

2.查看该进程中线程CPU使用率,使用top -Hp pid 查看各线程情况,并记录下CPU使用率高的线程ID(说明:系统恢复正常后的截图)

现场截图为:

PID    USER    PR NI  VIRT   RES   SHR S  %CPU    %MEM    TIME+    COMMAND
5298  channel 20 0   7193m  1.8g  30m S   85.7   11.7    1:27.34  java

3.使用jstack做Thread dump线程转储,转储包含了JVM中所有存活的线程,找出CPU使用率高的线程

3.1用app用户登录,使用jstack pid > threaddump*.log命令进行Thread dump(pid为步骤一的PID,log文件名可以自定义命名规则)

3.2由于应用服务器的CPU忽高忽低,所以在执行步骤3.1的同时,记录下步骤二的使用CPU高的线程ID,方便对照查找

4.将线程pid转成16进制,在生成的thread dump文件中查找对应的nid,定位问题

4.1使用 printf  ‘%x \n’ pid 生成16进制值

4.2使用16进制的值在thread dump文件中查找,如下图所示

在dump中,线程一般存在如下几种状态:
1、RUNNABLE,线程处于执行中
2、BLOCKED,线程被阻塞
3、WAITING,线程正在等待

5.由于服务器的故障现象是CPU会陡增,然后在恢复正常,一直循环出现。执行多次thread dump查看CPU高是否为同一问题引起,重复步骤2、3、4即可。多次thread dump后的问题定位都指向同一行代码。

6.由于怀疑受网络影响,进行tcpdump抓包,分析后排除

6.1通讯端口为18888,使用netstat -an|grep 18888查看,如下图所示

使用netstat查看18888端口,发现很多状态为CLOSE_WAIT状态
常用的四个状态是:ESTABLISHED 表示正在通信,TIME_WAIT 表示主动关闭,CLOSE_WAIT 表示被动关闭,LISTEN侦听来自远方的TCP端口的连接请求

6.2 网络抓包,用root用户登录,使用 tcpdump -i eth0 port 18305 and host ip -vv -s0 -w /tcpdumppkg.pcap 抓包

6.3使用wireshark或dali打开tcpdumppkg.pcap文件,另外一个应用没返回字节给当前应用导致从流中一直读不到字节数,直到超时。


后续优化监控功能

  1. 应用系统增加输出成功日志的监控
  2. 对网络连接状态为CLOSE_WAIT(被动关闭)的个数进行监控,语句为:netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

使用jstack定位应用服务器CPU使用率高的过程记录相关推荐

  1. netty cpu 占用率 高_交换机CPU使用率高问题定位

    诊断工具 display工具 log工具 报文冲击导致的CPU使用率高问题 CPU使用率高问题信息采集 诊断工具 display cpu-usage [ slot x ] display cpu-de ...

  2. java事务占用内存吗,如何排查java应用中CPU使用率高或内存占用高的问题

    如何排查java应用中CPU使用率高或内存占用高的问题?这类问题的排查步骤基本通用的.现在通过一个具体的例子来说明. 问题描述 最近有个线上项目每天0点过后CPU使用率会上升至200%到300%. 排 ...

  3. mc服务器java占用过大_如何排查java应用中CPU使用率高或内存占用高的问题

    点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 作者:MnameHZJ my.oschina.net/u/1420452/blog/224 ...

  4. java进程cpu使用率高_什么会导致Java应用程序的CPU使用率飙升?

    问题 无限循环的while会导致CPU使用率飙升吗? 经常使用Young GC会导致CPU占用率飙升吗? 具有大量线程的应用程序的CPU使用率是否较高? CPU使用率高的应用程序的线程数是多少? 处于 ...

  5. mysql利用cpu率高_MySQL CPU 使用率高的原因和解决方法

    用户在使用 MySQL 实例时,会遇到 CPU 使用率过高甚至达到 100% 的情况.本文将介绍造成该状况的常见原因以及解决方法,并通过 CPU 使用率为 100% 的典型场景,来分析引起该状况的原因 ...

  6. Kafka CPU使用率高排查思路及解决方案

    一.CPU使用率高的一般排查思路 1) top命令排查CPU使用率高的进程 2) su - omm切换到omm用户,jstack -l 进程pid>>文件路径 3) top -H -p 进 ...

  7. mysql cpu 高 原因 汇总_MySQL CPU 使用率高的原因和解决方法(来自aliyun官方文档)

    用户在使用 MySQL 实例时,会遇到 CPU 使用率过高甚至达到 100% 的情况.本文将介绍造成该状况的常见原因以及解决方法,并通过 CPU 使用率为 100% 的典型场景,来分析引起该状况的原因 ...

  8. MySQL CPU 使用率高的原因和解决方法(来自aliyun官方文档)

    MySQL CPU 使用率高的原因和解决方法 更新时间:2017-03-17 13:25:52   分享: 用户在使用 MySQL 实例时,会遇到 CPU 使用率过高甚至达到 100% 的情况.本文将 ...

  9. JVM系列-CPU使用率高问题排查方法

    引言 Java程序在实际生产过程中经常遇到CPU使用率高的问题,那么应该如何排查问题的原因呢,本文大概描述一下排查方法. 一.排查占用CPU的进程 使用top命令,在大写打开的情况下按P键或者在大写没 ...

最新文章

  1. [原][osg]osgconv浅析
  2. 解决wamp、vertrigo等集成环境安装后apache不能启动的问题
  3. python knnsearch_sklearn之KNN详解+GridSearchCV使用方法
  4. 微服务部署:蓝绿部署、滚动部署、灰度发布、金丝雀发布
  5. 【Javascript】 == 、=== 区别
  6. 你真的认真想过了吗?
  7. Orleans例子再进一步
  8. 最详细的Spring核心IOC的源码分析
  9. php集中管理,PHPWind 7.5 SP2 公布 三大改良增强营运基本功能
  10. php中的常用魔术方法总结
  11. php store快捷键设置,mac 下 phpstorm 快捷键整理
  12. 数据结构计算机复试题,2021考研计算机408数据结构试题及答案解析
  13. Webix JavaScript UI 新版得心应手
  14. 【技巧】如何给CSDN上的每篇原创文章添加版权声明
  15. IIS发布网站,如此简单
  16. Meatycake,51nod2117,树状数组
  17. 回程路由 的作用 为什么 什么时候需要回程路由
  18. 投资:铁矿石研究框架
  19. 如何把汉字转成五笔与拼音(首字母或全部字母)
  20. conv1d(): argument ‘padding‘ (position 5) must be tuple of ints, not str 这个错误是怎么回事呀?请各位帮忙看看,万分感谢

热门文章

  1. 2022-01-10:路径交叉。给你一个整数数组 distance 。 从 X-Y 平面上的点 (0,0) 开始,先向北移动 distance[0] 米,然后向西移动 distance[1] 米,向南
  2. ubuntu软件开发必备东西
  3. CSS+DIV-设置图片效果
  4. 如何将本地图片转成图片链接
  5. Springboot实战项目---从需求分析到项目部署一站式开发,给简历添加一点色彩
  6. 2.5 知识点 pri文件有啥用
  7. [数据结构与算法]-二叉查找树(BLT)介绍及其实现(Java)
  8. dlink设置虚拟服务器,dlink设置虚拟服务器
  9. Https中公私钥加密算法和其使用的RSA算法分析
  10. 通过RGB或YUV改变图像的色度和饱和度