文章目录

  • 前言
  • 1.高手怎样定位CPU高问题
    • 1.1找到Cpu消耗比较高的进程:
    • 1.2通过问题进程找到线程:
    • 1.3通过线程id进行打印问题代码:
    • 1.4通过上面步骤的异常代码查询定位代码:
    • 1.5总结:
  • 2.其他的定位问题的命令:
    • 2.1 jps和jmap
    • 2.2 jinfo命令:
    • 2.3 jstat命令:
    • 2.4 jstack命令:
  • 3总结

前言

现在我们部署jar包服务都是在linux上面,仅仅是代码写的好还不行,我们还要能够进行排查问题,利用一些常用的linux命令来分析运行日志、异常堆栈信息、堆使用、GC信息、JVM参数分析、线程分析等等

1.高手怎样定位CPU高问题

1.1找到Cpu消耗比较高的进程:

top -c
#-c可以让我们更好的看到执行的命令

1.2通过问题进程找到线程:

假设进程id为36

ps p 36 -L -o pcpu,pid,tid,time,tname,cmd

1.3通过线程id进行打印问题代码:

现在定位的问题线程id为46

printf "%x\n"  46

找到对应的nid(native thread id. 每一个nid对应于linux下的一个tid) 信息

1.4通过上面步骤的异常代码查询定位代码:

jstack -l 3036 |grep 'nid对应的异常信息'

1.5总结:

上面就是通用的服务器上面运行jar包进行定位问题的流程,但是现在很多公司已经采用Docker容器技术,可能上面的定位问题的方法有些地方已经不再适用。下面会继续介绍其他的容器中也能适用的命令来定位问题。

2.其他的定位问题的命令:

2.1 jps和jmap

jps -v

该命令和jmap 的heap很像,但是没有jmap的命令全面,只是简单的输出了jvm的运行参数:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qAPWG9fA-1623151443315)(https://ui.our666.com/file/20210506110132022.png)]
jmap的命令
显示Java堆详细信息

jmap -heap 进程id

效果图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ipY9NljO-1623151443318)(https://ui.our666.com/file/20210506110205824.png)]
jmap的histo命令:

显示堆中对象的统计信息:

jmap -hsito  pid

效果图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xrnH9XhS-1623151443323)(https://ui.our666.com/file/20210506110622053.png)]
生成dump文件命令:

jmap -dump:format=b,file=heapdump.phrof pid

生成堆转储快照dump文件后可以进行拷贝到外面用工具进行分析。

2.2 jinfo命令:

jinfo 是 JDK 自带的命令,可以用来查看正在运行的 java 应用程序的扩展参数,包括Java System属性和JVM命令行参数;也可以动态的修改正在运行的 JVM 一些参数。当系统崩溃时,jinfo可以从core文件里面知道崩溃的Java应用程序的配置信息.

命令:

jinfo pid

效果图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iUQ3rg51-1623151443325)(https://ui.our666.com/file/20210506110851963.png)]

2.3 jstat命令:

主要是为了查看核分析gc的相关情况:

jstat -gc pid

效果图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b6ujQI5v-1623151443329)(https://ui.our666.com/file/20210506111009285.png)]

2.4 jstack命令:

jstack是分析jdk线程的命令,比较重要,命令:

jstack -l 37

效果图:

jstack是比较重要的线程分析的命令,进行查看线程的创建情况,运行状态等等,其中我们需要重点关注的是死锁的线程、阻塞的线程等。

线程状态 备注
死锁 Deadlock(重点关注)
执行中 Runnable
等待资源 Waiting on cond分析名tion(重点关注)
等待获取监视器 Waiting on monitor entry(重点关注)
暂停 Suspended
对象等待中 Object.wait() 或 TIMED_WAITING
阻塞 Blocked(重点关注)
停止 Parked

3总结

不同的运行环境可能会出现不同的问题,程序员要做的就是尽量上线前能够诊断出来自己的代码问题,上线后能够根据问题的表象进行定位和解决问题,希望这篇文章能够帮助到大家。

java开发linux常用命令相关推荐

  1. java使用linux常用命令_linux常用Java程序员使用命令(一)

    pwd 显示当前路径 cd切换目录 . .. ~ ls显示文件(夹) -l 显示详细信息 -a显示全部,包括隐藏文件(夹) mkdir创建文件夹 -p递归创建 touch创建空白文件 echo cat ...

  2. linux常用命令--开发调试篇

    前言 Linux常用命令中有一些命令可以在开发或调试过程中起到很好的帮助作用,有些可以帮助了解或优化我们的程序,有些可以帮我们定位疑难问题.本文将简单介绍一下这些命令. 转自:https://www. ...

  3. java开发中常用的Git命令详解

    java开发中常用的Git命令详解(IDEA内如何操作) 一:写这篇文章的目的是什么? 二:使用场景在哪里? 1:当我们要使用idea去git仓库拉代码时,首先我们的idea得配置git工具 2:项目 ...

  4. 嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令

    文章目录 1.Ubuntu操作入门 1.1 Ubuntu下打开终端 1.1.1 用搜索框打开终端 1.1.2 使用右键打开终端 1.1.3 快捷键打开终端 1.1.4 调节终端的字体大小及颜色 1.2 ...

  5. 嵌入式linux基本指令,成都嵌入式开发之Linux常用命令大全

    原标题:成都嵌入式开发之Linux常用命令大全 Linux系统中有很多命令,使用Linux系统最常用的就是命令操作,而不是像Windows一样,使用鼠标操作.Linux中许多常用命令是必须掌握的,也有 ...

  6. linux常用命令速查手册PDF下载

    Linux常用命令速查手册 需要该PDF文档的朋友扫码关注下方二维码[入门小站],后台回复 「1001」 自取 点击下面标题即可获取对应资料 LeetCode刷题开源手册 LeetCode题解[jav ...

  7. linux常用命令速查手册

    Linux常用命令速查手册 需要该PDF文档的朋友扫码关注下方二维码[入门小站],后台回复 「1001」 自取 点击下面标题即可获取对应资料 LeetCode刷题开源手册 LeetCode题解[jav ...

  8. linux里面查找替换命令,Linux常用命令(一)————查找和替换

    1. 查找一个字符串 一个字符串是一行上的一个或几个字符. 为查找一个字符串,在vi命令模式下键入"/",后面跟要查找的字符串,再按回车.vi将光标定位在该串下一次出现的地方上.键 ...

  9. 【Linux-Linux常用命令】Linux常用命令总结

    [Linux-Linux常用命令]Linux常用命令总结 1)文件管理 1.1.目录操作 1.2.vim操作 1.3.打包压缩相关命令 1.4.Linux管道 2)文件权限管理 2.1.三种基本权限 ...

  10. 【linux常用命令】

    linux常用命令 tcpdump 文件操作 分析信息详情 lsof 获得网络信息 LINUX 系统高级工具 pstack strace proc文件系统 日志监控工具 tail multitail ...

最新文章

  1. 【RLChina2020】 强化学习夏令营课件(附pdf下载)
  2. 2017年诺贝尔生理学或医学奖揭晓
  3. android152 笔记 2
  4. python语言的翻译方式是什么-python自动翻译实现方法
  5. trackback (引用通告) 说明
  6. 深度探索c++对象模型读书笔记:Data语意学-Data Member的绑定
  7. 【HDOJ】1196 Lowest Bit
  8. java基础英语---第二十六天
  9. L - Lookup Performance(主席树)
  10. 下取整函数的含义_取整函数解读
  11. Building designing UVA - 11039
  12. freebsd配置IP
  13. linux服务器搭建_Linux下搭建FTP服务器笔记
  14. android文件搜索广播,Android 实现无网络传输文件
  15. Windows 8 Directx 开发学习笔记(三)摄像机设置及控制正方体旋转
  16. Nginx 场景应用
  17. Python编写求100以内素数
  18. QT制作一个串口调试助手出现乱码问题
  19. win7工作组看不到“其他电脑”的解决方法
  20. saas系统服务器搭建,SaaS平台部署.doc

热门文章

  1. python出现Unknown label type: 'continuous'问题
  2. FormulaR1C1是EXCEL中单元格公式输入方法
  3. Android 仿微信通讯录功能,好友排序 + 字母索引
  4. MySQL约束和表的复杂查询操作
  5. mysql怎么加载txt文本1148_如何解决MySQL导入数据之ERROR1148(42000)
  6. Variable used in lambda expression should be final or effectively final
  7. 手把手教你U盘装Raid系统
  8. 光纤分布式声波传感DAS语音还原介绍
  9. 课堂笔记 Numpy酒鬼漫步
  10. 学影视后期剪辑应该看什么书?零基础学剪辑书籍推荐