JVM运维实用排查工具

准备环境
准备一台服务器(C7)
关闭selinux、防火墙

setenforce 0
systemctl stop firewalld
systemctl disable firewalld
vim /etc/selinux/config      //永久关闭selinux  
              修改内容为:SELINUX=disable

#安装Tomcat&JDK安装时候选择tomcat 软件版本要与程序开发使用的版本一致。jdk版本要进行与tomcat保持一致

上传jdk包到服务器中,安装jdk
mkdir /application     #创建工作目录
tar xzf jdk-8u60-1inux-x64.tar.gz -C /application/
mv /application/jdk1.8.0_60 /application/jdk
#设置环境变量
vim /etc/profile 
export JAVA_HOME=/application/jdk  #指定java安装目录
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH  #用于指定java系统查找命令的路径
export CLASSPATH=.:$JAVA_HOME/lib$JAVA_HOME/jre/lib:SJAVA_HOME/lib/tools.jar
#类的路径,在编译运行java程序时,如果有调用到其他类的时候,在classpath中寻找需要的类。
source /etc/profile  #让环境变量生效
#测试jdk是否安装成功
#java -version 
java version "1.8.0_60"
Java(TM)SE Runtime Environment(build 1.8,0_60-b27)
Java HotSpot(TM)64-Bit server M(build 25.60-b23,mixed mode)
#安装Tomcat将tomcat安装包上传到服务器中:
#tar xzf apache-tomcat-8.0.27.tar.gz -C /application/
#mv /application/apache-tomcat-8.0.27 /application/tomcat
#设置环境变量
echo 'export TOMCAT_HOME=/application/tomcat' >>/etc/profile
source /etc/profile
启动tomcat
/application/tomcat/bin/startup.sh
关闭tomcat
/application/tomcat/bin/startup.sh
查看是否启动成功
lsof -i:8080
浏览器测试
ip地址:8080

1、jps
用来查看Java程序进程的具体状态,包括进程ID,进程启动的路径及启动参数等等,与unix上的ps类似,只不过jps是用来显示java进程。

常用参数如下:
-q:忽略输出的类名、Jar名以及传递给main方法的参数,只输出pid
-m:输出传递给main方法的参数,如果是内嵌的JVM则输出为null
-l:输出完全的包名,应用主类名,jar的完全路径名
-V:输出传给jvm的参数了

注意:使用jps时的运行账户要和JVM虚拟机启动的账户一致。若启动VM虚拟机是运行的账户为www,那使用jps指令时,也要使用www用户去指定。sudo -u www jps

Example
查看已经运行的JVM进程的实际启动参数
[root@localhost bin]#jps -v

2、jstack
jstack 用于打印出给定的java进程ID或远程调试服务Java堆栈信息。jstack是非常有用的。打印出来的信息通常在运维的过程中被保存起来(保存故障现场),以供RD们去分析故障

常用参数如下:
jstack <pid>
jstack [-l] <pid>  //长列表,打印关于锁的附加信息
jstack [-F] <pid> //当’jstack [-l] pid’没有响应的时候强制打印栈信息
Example
打印JVM的堆栈信息,以供问题排查
[root@localhost~]#jstack -F 38360 > /tmp/jstack.1og  //38360是PID

3、jinfo
可以查看或修改运行时的IVM进程的参数。

常用参数:
jinfo [option] pid 
where <option> is one of:
-flag <name> to print the value of the named VW flag
-flag [+|-] <name> to enable or disable the named VM flag
-flag <name>=<value> to set the named VM flag to the given value
-flags to print VM flags

Example
#根据PID查看目前分配的最大堆栈
[root@localhost~]#jinfo-flag MaxHeapsize 38360
-XX:MaxHeapSize=4294967296
#动态更改JVM的最大堆栈值
[root@localhost~]#jinfo-flag MaxHeapsize=4294967296 38360
执行上面这条命令可能会报错
#jinfo并不能动态的改变所有的JVM参数。那到底有哪些参数能够被动态的改变呢?
#java -XX:+PrintFlagsFinal -version 查看JVM的所有参数
#java -XX:+PrintFlagsFinal -version grep manageable
#查看可以动态修改的参数
[root@localhost ~]#java -XX:+PrintFlagsFinal -version | grep manageable

在这里插入图片描述
在这里插入图片描述
4、jstat
主要利用JVM内建的指令对java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。
常用指令:

[root@localhost~]#jstat -gc 113059 1000 10  //打印PID为113059JVM状态,一共打印10次,每次间隔时间为1s(1000ms)
-gc用于查看JVM中堆的垃圾收集情况的统计
注:istat的用法超级强大,我们这里只是列举出列真中一个简单的应用。
Example
[root@localhost~]#jstat -gc 113059 1000 10

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值