JAVA应用生产问题排查步骤

AVA应用生产问题排查步骤

学会这篇文章里面的命令并熟练使用,出去面试就可以说自己有5年工作经验并且精通JVM了。本篇文章中介绍的命令绝对是JAVA程序员平时工作中经常使用的并且必须会的命令,如果你不会你就是没有工作经验的人。如果你不会,那么在别人眼中你肯定就是菜鸟一个,所以本篇文章中的命令,你必须学会并且熟练使用。

注意:本篇文章内容基于JDK版本:

java version “1.6.0_113”

Java™ SE Runtime Environment (build 1.6.0_113-b01)

Java HotSpot™ 64-Bit Server VM (build 20.111-b01, mixed mode)

1 JAVA自带命令JPS

jps这个命令在JDK的安装目录bin/下面

JAVA应用生产问题排查步骤

使用jps这个命令可以找到运行在服务器(电脑)上面的所有JVM进程。jps最常用、最有用的命令有以下俩个。

  • jps -vljps -vl这个命令中的-v是输出启动JVM进程时传递给JVM的参数,-l是输出main方法所在类的完整路径或者JAR包的完成路径,命令结果如下截图:
  • jps -mljps -ml这个命令中的-m是输出传给main方法的参数,-l是输出main方法所在类的完整路径或者JAR包的完成路径,命令结果如下截图:在Liunx服务器上面执行jps -ml结果如下截图:工作中最常用的命令是jps -vl。jps -ml这个命令结果比较鸡肋并且不常用。你可以自己写一个main方法,在main方法里面写一个死循环,并且传递给main方法几个参数,然后再执行一下jps -vl和jps -ml这俩个命令感受一下。你如果光看我的文章,自己不手敲这些命令,你就是瞎看,没一点用。

如果你们公司是通过weblogic部署的应用,那么weblogic启动的时候会给JVM进程传一个参数-Dweblogic.Name= yourwebname ,这个 yourwebname 就是你部署应用的应用名称,然后你可以通过jps -vl |grep yourwebname 这个命令找到你javaweb项目的jvm进程id。

但是,如果你的应用是通过tomcat部署,那么jps -vl |grep yourwenname 这个命令就不太管用了。不过jps -vl 这个命令肯定还是管用的,因为jps是java自带的命令,跟tomcat或者weblogic没有任何关系。

如果你的应用部署在tomcat上面,那么你就用jps -vl 找tomcat这个JVM进程就可以了。原理如下:

一个tomcat就只能启动一个JVM进程,如果你的tomcat里面部署了多个Java Web应用, 那么你的多个Java Web应用共享这个一个JVM,每个JavaWeb应用都有自己的ClassLoader,也就是说一个JVM中可以有多个Class Loader。

如果其中一个JavaWeb应用发生了内存泄漏或者别的原因把JVM搞垮了,那么这个tomcat下面的所有JavaWeb应用就全挂了,所以生产环境没有人会用一个tomcat去部署多个JavaWeb应用的。生产环境,都是启动多个tomcat,每个tomcat只部署一个JavaWeb应用。

我感觉一个tomcat只能启动一个JVM进程这个设计非常不合理,假如我一个tomcat下面部署了多个JavaWeb应用,我想给每个JavaWeb应用设置不同的JVM参数都不行。现在的SpringBoot应用都是直接通过java -jar app.jar启动的,并且SpringBoot直接就内置了一个tomcat,所以你通过java -jar app.jar启动的时候就是一个tomcat只部署一个We应用。

关于tomcat的知识我是参考CSDN网站上面的大神greencacti的文章: Tomcat中会启动一个jvm还是多个jvm? 。

还有CSDN网站上面的大神tyyh08的文章

一个tomcat部署多个应用,有几个JVM? 。

2 Liunx上面top命令

使用jps命令找到我们的jvm进程ID之后赶紧使用top命令看一下服务器上面的大致情况,top命令默认好像是3秒钟刷新一次。

top 命令结果如下截图:

JAVA应用生产问题排查步骤

top命令结果显示之后按小写字母c,可以显示完整的命令行,这个非常有用,一定要用。如截图

JAVA应用生产问题排查步骤

然后按大写母P,以CPU使用率排序(按进程负载排序,排在最上面的就是CPU使用率最高的)

JAVA应用生产问题排查步骤

按大写字母M,以内存使用率排序

JAVA应用生产问题排查步骤

高亮显示:可以这样搞,先按大写字母P,再按小写字母b,再按小写字母x。效果如下截图:

JAVA应用生产问题排查步骤

按键b打开或关闭 运行中进程的高亮效果

按键x打开或关闭 排序列的高亮效果

按数字 1 键,可以显示多个CPU的使用情况

JAVA应用生产问题排查步骤

top显示的是服务器上面所有的进程概况,top类似于Windows电脑上面的的任务管理器。

JAVA应用生产问题排查步骤

但是,如果我只关心我自己的JVM进程呢?可以使用这个命令

top -p jvm进程ID,这个命令可以指定进程,只显示指定进程的概况,按空格键可以立即刷新。

JAVA应用生产问题排查步骤

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值