• 通过写脚本的方式自动获取JVM内的进程堆栈信息等内容


    公司转java之后 经常会遇到java进程占用CPU特别多的情况. 每次连上机器进行处理都比较慢了. 索性自己写一个脚本, 把想要查询的信息直接汇总进去. 这样的话 就简单很多了. 

    脚本也很简单主要如下:

    简单解释一下

    1. 将产品的 java 路径定义到环境变量里面去. 便于使用命令. 注意这一个可以根据不同的安装目录进行修正. 

    2. 获取当前正在运行的进程号. 当然还可以使用其他的命令获取.

    3. 获取当前日期加时分的一个变量. 

    4. 并且进行简单的echo输出, 便于后续的查看

    5. top 一下这个进程. 并且将进程排序前五名的进程id 和cpu 占用率打印出来. 使用了 awk 和 sed 等多个命令. 

    6. 使用 jcmd 的命令打印相关信息 主要有 VM.flags , Thread.print , GC.class_histogram , GC.heap_info 等. 

    7. 再次打印一下占用量较高的进程信息.

    8. 根据 state的关键词进行过滤,并且将同一行的信息进行查看展示和打印.  并且使用 sort和uniq 组合命令进行简单计算. 展示当前进程的状态分组情况. 

    export PATH=$PATH:/gscloud/jstack/runtime/java/x86_64-linux/bin/
    export pid=`jps |grep caf-bootstrap.jar |awk '{print $1 }' `
    echo $pid
    export now=`date +%Y%m%d%H%M`
    echo $now.log
    #cd /javalog
    top -Hp $pid -n 1 |awk '{print "占CPU较高的进程号 " $1 " 该进程CPU占用率 " $9}' |sed -n '8,12p' >> $now.log
    echo "JVM虚拟机的参数信息" >> $now.log
    jcmd $pid VM.flags >> $now.log
    echo "JVM虚拟机的进程信息" >> $now.log
    jcmd $pid Thread.print >> $now.log
    echo "JVM虚拟机的类信息" >> $now.log
    jcmd $pid GC.class_histogram >> $now.log
    echo "JVM虚拟机的GC堆的信息" >> $now.log
    jcmd $pid GC.heap_info >> $now.log
    top -Hp $pid -n 2  >> $now.log
    echo " "  >> $now.log
    top -Hp $pid -n 1 |awk '{print "占CPU较高的进程号 " $1 " 该进程CPU占用率 " $9}' |sed -n '8,12p' >> $now.log
    echo "简单统计不同进程的state信息 "  >> $now.log
    
    cat  $now.log  |grep  "java.lang.Thread.State:" |awk '{print $2$3$4$5}' |sort |uniq -c >> $now.log
    #tar -zcvf $now.log.tar.gz $now.log --remove-files

    可以简单看一个打印结果信息. 

    大概十秒左右收集完信息

     查看文件. 

    (现在没有什么负载, 所以基本上看不到有高占用的情况.)

     文档的末尾有简单的排序信息:

    可以看到这十秒钟之类的进程占用信息有了变化.

  • 相关阅读:
    MVC 中的Areas支持
    webAPI 自动生成帮助文档
    ASP.NET Web API系列教程目录
    ASP.NET MVC学习系列 WebAPI初探
    win7下配置apache和php
    VS2010打不开VS2012 .NET MVC 工程,及打开后部分模块加载不正确的解决办法
    Sqlserver通过链接服务器访问Oracle的解决办法
    [C# 基础知识系列]专题一:深入解析委托——C#中为什么要引入委托
    [C# 基础知识系列]专题四:事件揭秘
    [C# 基础知识系列]专题十六:Linq介绍
  • 原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/13305210.html
Copyright © 2020-2023  润新知