38-java开发linux常用命令


  • 前言

  • 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 "%xn"  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的运行参数:38-java开发linux常用命令jmap的命令 显示Java堆详细信息

jmap -heap 进程id

效果图:38-java开发linux常用命令jmap的histo命令:

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

jmap -hsito  pid

效果图:38-java开发linux常用命令生成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

效果图:38-java开发linux常用命令

2.3 jstat命令:

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

jstat -gc pid

效果图:38-java开发linux常用命令

2.4 jstack命令:

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

jstack -l 37

效果图:38-java开发linux常用命令jstack是比较重要的线程分析的命令,进行查看线程的创建情况,运行状态等等,其中我们需要重点关注的是死锁的线程、阻塞的线程等。

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

3总结

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


原文始发于微信公众号(Java时间屋):38-java开发linux常用命令

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/251863.html

(0)
java小白的头像java小白

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!