使用jstack定位应用服务器CPU使用率高的过程记录
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文件,另外一个应用没返回字节给当前应用导致从流中一直读不到字节数,直到超时。
后续优化监控功能
- 应用系统增加输出成功日志的监控
- 对网络连接状态为CLOSE_WAIT(被动关闭)的个数进行监控,语句为:netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
使用jstack定位应用服务器CPU使用率高的过程记录相关推荐
- netty cpu 占用率 高_交换机CPU使用率高问题定位
诊断工具 display工具 log工具 报文冲击导致的CPU使用率高问题 CPU使用率高问题信息采集 诊断工具 display cpu-usage [ slot x ] display cpu-de ...
- java事务占用内存吗,如何排查java应用中CPU使用率高或内存占用高的问题
如何排查java应用中CPU使用率高或内存占用高的问题?这类问题的排查步骤基本通用的.现在通过一个具体的例子来说明. 问题描述 最近有个线上项目每天0点过后CPU使用率会上升至200%到300%. 排 ...
- mc服务器java占用过大_如何排查java应用中CPU使用率高或内存占用高的问题
点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 作者:MnameHZJ my.oschina.net/u/1420452/blog/224 ...
- java进程cpu使用率高_什么会导致Java应用程序的CPU使用率飙升?
问题 无限循环的while会导致CPU使用率飙升吗? 经常使用Young GC会导致CPU占用率飙升吗? 具有大量线程的应用程序的CPU使用率是否较高? CPU使用率高的应用程序的线程数是多少? 处于 ...
- mysql利用cpu率高_MySQL CPU 使用率高的原因和解决方法
用户在使用 MySQL 实例时,会遇到 CPU 使用率过高甚至达到 100% 的情况.本文将介绍造成该状况的常见原因以及解决方法,并通过 CPU 使用率为 100% 的典型场景,来分析引起该状况的原因 ...
- Kafka CPU使用率高排查思路及解决方案
一.CPU使用率高的一般排查思路 1) top命令排查CPU使用率高的进程 2) su - omm切换到omm用户,jstack -l 进程pid>>文件路径 3) top -H -p 进 ...
- mysql cpu 高 原因 汇总_MySQL CPU 使用率高的原因和解决方法(来自aliyun官方文档)
用户在使用 MySQL 实例时,会遇到 CPU 使用率过高甚至达到 100% 的情况.本文将介绍造成该状况的常见原因以及解决方法,并通过 CPU 使用率为 100% 的典型场景,来分析引起该状况的原因 ...
- MySQL CPU 使用率高的原因和解决方法(来自aliyun官方文档)
MySQL CPU 使用率高的原因和解决方法 更新时间:2017-03-17 13:25:52 分享: 用户在使用 MySQL 实例时,会遇到 CPU 使用率过高甚至达到 100% 的情况.本文将 ...
- JVM系列-CPU使用率高问题排查方法
引言 Java程序在实际生产过程中经常遇到CPU使用率高的问题,那么应该如何排查问题的原因呢,本文大概描述一下排查方法. 一.排查占用CPU的进程 使用top命令,在大写打开的情况下按P键或者在大写没 ...
最新文章
- [原][osg]osgconv浅析
- 解决wamp、vertrigo等集成环境安装后apache不能启动的问题
- python knnsearch_sklearn之KNN详解+GridSearchCV使用方法
- 微服务部署:蓝绿部署、滚动部署、灰度发布、金丝雀发布
- 【Javascript】 == 、=== 区别
- 你真的认真想过了吗?
- Orleans例子再进一步
- 最详细的Spring核心IOC的源码分析
- php集中管理,PHPWind 7.5 SP2 公布 三大改良增强营运基本功能
- php中的常用魔术方法总结
- php store快捷键设置,mac 下 phpstorm 快捷键整理
- 数据结构计算机复试题,2021考研计算机408数据结构试题及答案解析
- Webix JavaScript UI 新版得心应手
- 【技巧】如何给CSDN上的每篇原创文章添加版权声明
- IIS发布网站,如此简单
- Meatycake,51nod2117,树状数组
- 回程路由 的作用 为什么 什么时候需要回程路由
- 投资:铁矿石研究框架
- 如何把汉字转成五笔与拼音(首字母或全部字母)
- conv1d(): argument ‘padding‘ (position 5) must be tuple of ints, not str 这个错误是怎么回事呀?请各位帮忙看看,万分感谢
热门文章
- 2022-01-10:路径交叉。给你一个整数数组 distance 。 从 X-Y 平面上的点 (0,0) 开始,先向北移动 distance[0] 米,然后向西移动 distance[1] 米,向南
- ubuntu软件开发必备东西
- CSS+DIV-设置图片效果
- 如何将本地图片转成图片链接
- Springboot实战项目---从需求分析到项目部署一站式开发,给简历添加一点色彩
- 2.5 知识点 pri文件有啥用
- [数据结构与算法]-二叉查找树(BLT)介绍及其实现(Java)
- dlink设置虚拟服务器,dlink设置虚拟服务器
- Https中公私钥加密算法和其使用的RSA算法分析
- 通过RGB或YUV改变图像的色度和饱和度