原生系统命令排查的方法

分别分享下Linux和Windows系统下的排查方法

首先是Linux系统下

如果不借助工具,使用Linux和jdk自带命令的话,步骤是这样的:

  1. top命令查出占用最高的进程;
  2. 使用jps -l 或ps -ef|grep java|grep -v grep命令,查出是哪个java服务搞的事;
  3. 使用ps -mp 进程PID -o THREAD,tid,time命令,查询具体是进程中哪个线程搞的事,命令解释:m表示显示所有的线程,p表示pid进程使用的cpu时间,-o是用户自定义的显示格式;
  4. 将线程ID转换为16进制格式,注意是小写,比如,线程ID为10则转换为a,必要时可借助计算器进行转换;
  5. 使用jdk的命令jstack 进程PID | grep tid(第四步转换后的结果) -A60,命令解释:-A60为查看结果后的60行;
  6. 上一步骤会直接打印出线程的执行栈信息,可直接定位出具体的哪一行代码出的事,到此,就可以到我们的业务代码中去检查、解决了。

使用自带的命令,大概要经历以上几个步骤才能最终定位到原因,接下来介绍使用工具的排查方法。

Windows系统排查方法

前四步目的是找出占有最高的线程ID,接下来使用微软官方的增强任务管理器:Process Explorer,可到官网下载。

同样先找到占有最高进程,查看详情,找到占有最高的线程TID,接下来的步骤就一样了。

使用Jarboot开源工具定位排查

Jarboot本身是一个启动Java进程的工具,同时它还附带了一些调试命令。本文介绍下当Java的服务占用了过高的CPU资源时,该如何进行排查。

可通过Gitee和GitHub下载最新的安装包,使用Docker的请更新下Jarboot的Docker镜像。

GitHub: https://github.com/majianzheng/jarboot

Docker Hub: https://registry.hub.docker.com/r/mazheng0908/jarboot

首先使用Jarboot自带的示例程序模拟下CPU占用过高的情况,将算法执行次数设的较高,间隔设为0,这样执行过程会占用很高的CPU。

和上面的前两步一样,首先查出是哪个Java服务,接下来到Jarboot的界面上,选中对应的Java进程。

接下来只需要一条命令,thread -n 3,查看最忙的前3个线程,并打印堆栈,如下图:

相比于不借助工具的更加方便,仅需一条命令就可以定位出哪一行。

如果不是用的Jarboot,还可以使用淘宝的Arthas工具,命令的使用是一样的。

Jarboot的使用手册见:快速上手 · 语雀

Jarboot的Demo示例下载:

示例包含了Spring Cloud的典型服务(业务服务、API网关)、NacosSentinelSeata等。

由于是完整的可运行环境,文件较大放在了网盘中,下载后解压即可用,注意Windows环境下Seata的服务配置依照压缩包中的图片提示修改配置。

阿里云盘:阿里云盘分享

百度网盘: 百度网盘 请输入提取码

提取码: 8yh5

Java服务CPU高如何定位解决相关推荐

  1. win10服务器cpu占用过高,解决win10服务主机内存和cpu高占用的解决方法

    有些使用Win10系统的用户反馈说,电脑总是卡到不行,检查后发现原来是服务主机,本地服务占用了大量内存和cpu,导致电脑运行起来并不那么流畅.那么,遇到这种问题该怎么办呢?接下来,小编就向大家分享解决 ...

  2. java 主备切换_keepalived 实现 Java 服务的高可用(主备切换)

    前言 本文要说的是基于 keepalived 实现两台服务器之间的主备切换,从而实现 Java 服务的高可用.keepalived 的原理不多做介绍,自行搜索了解,keepalived 的安装部署请参 ...

  3. Java服务CPU飙到99%问题排查

    原文链接:http://www.jianshu.com/p/e96c74133be6 一大早刚来到公司工位上,电话响起来了,一看是运维老湿打过来到,紧张的接起电话,小心脏扑通扑通跳."小路啊 ...

  4. JAVA中的高并发,解决高并发的方案

    java高并发,如何解决,什么方式解决 一.什么是高并发 二.高并发的解决方法有两种 三.追加 一.什么是高并发 1.1 高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑 ...

  5. java并发 cpu高_java高并发核心要点|系列5|CPU内存伪共享

    上节提到的:伪共享,今天我们来说说. 那什么是伪共享呢? 这得从CPU的缓存结构说起.以下如图,CPU一般来说是有三级缓存,1 级,2级,3级,越上面的,越靠近CPU的,速度越快,成本也越高.也就是说 ...

  6. dotnet core CPU高问题定位 dotnet-dump

    原文出处:dotnet core 高CPU定位 dotnet-dump篇 - linFen - 博客园 在windows操作系统,我们可以用Windbg定位,那在linux微软也提供dotnet-du ...

  7. java服务端高并发问题_Java服务端两个常见的并发错误

    理想情况来讲,开发在开始编写代码之前就应该讲并发情况考虑进去,但是大多数实际情况确是,开发压根不会考虑高并发情况下的业务问题.主要原因还是因为业务极难遇到高并发的情况. 下面列举两个比较常见的后端编码 ...

  8. 导航定位向高精定位的演进与实践

    导读 地图软件现在已成为人们出行必备的重要辅助工具.为了实现准确的导航,首先必须准确确定人或车的当前位置.因此,定位技术就是实现导航功能的基石. 本文较系统的介绍了手机.车机导航定位中使用的关键技术, ...

  9. 【开发经验】java服务生产环境CPU使用过高解决思路

    文章目录 思路 1.定位java服务进程 2.定位线程id 3.定位代码块 java服务生产环境CPU突然升高,日志查询无果时,可以通过使用jvm的调试工具定位问题. 思路 定位java服务进程--& ...

最新文章

  1. WPF的二维绘图(一)——DrawingContext
  2. python调用其他程序或脚本方法(转)
  3. 基于SLS构建RDS审计合规监控
  4. [旧博客]不用编程也能搞定作弊刷票
  5. 想赚钱广而告之是必不可少的
  6. 最近在写个人网站,忙碌中。。。
  7. unity 插件 color picker htc手柄控制,扣动扳机生成三维点线
  8. 学习机器学习,需要具备什么的数学基础?
  9. 为什么需要交叉编译器
  10. 农村三资管理平台app_鑫农三资app下载-鑫农三资app下载安卓版 v1.0.2_手机乐园
  11. x264码率控制介绍、配置及应用
  12. 计算机网络的定义以及分类
  13. Java线程状态及其转移
  14. silk lobe资源公众号_电视剧资源免费看公众号【推荐】
  15. 俄亥俄州立大学计算机科学转学成功,托福97,我是如何转学成功的?
  16. Nature | 易基因DNA甲基化测序助力人多能干细胞向胚胎全能8细胞的人工诱导
  17. echarts饼图南丁格尔玫瑰图属性设置
  18. 数学与计算机学院女生节标语,女生节标语理学院
  19. 将figma的设计图上传到蓝湖
  20. “零代码”写爬虫下载自己全部的豆瓣影评

热门文章

  1. 实战16:RFM实战:基于使用RFM+R模型量化用户价值进行金融产品精准营销
  2. Excel如何固定表头,任意一行
  3. 使用DEM山体阴影制作精美地形图
  4. 静子 今天的漫画上色图欣赏
  5. 计算机二级要学的函数有哪些,计算机二级常用函数,你了解多少?
  6. 关于 passive
  7. 7 、【股票的交易规则】
  8. web前端换行代码是什么?
  9. 服务器端判断是PC访问还是手机访问
  10. 微信小程序第三次培训笔记