• 计划任务方式定期获取jvm dump的方法


    说明

    • 产品最近有一些问题,想着能够每隔一段时间抓取一下dump文件.
    • 需求 可以定期抓取, 需要注意磁盘空间的使用.

    实现方法

    • 定时任务使用 crontab 计划任务来做
    • 预定义获取jvm dump的命令文件为: /deploy/getjvmdump
    crontab -e 打开计划任务 增加如此内容. 
    5 */1 * * * /deploy/getjvmdump
    没个准点的 第五分钟执行一遍命令
    

    脚本内容

    export JAVA_HOME=/app/server/runtime/java/x86_64-linux/
    export PATH=/app/server/runtime/java/x86_64-linux/bin/:$PATH
    
    if [ ! -d /jvmdump ]; then
    mkdir -p /jvmdump
    fi
    
    dumptime=`date +%Y%m%d%H%M`
    dumpid=`jps |grep caf-boot|awk '{print $1}' |head -n 1`
    
    if  [[ ! $dumpid ]]; then
    dumpid=`jps |grep PropertiesLauncher|awk '{print $1}' |head -n 1`
    fi
    
    # 需要区分正常启动还是优雅启动
    echo $dumpid
    echo $dumptime
    filename=$dumptime"_"$dumpid
    echo $filename
    
    jcmd $dumpid  GC.heap_dump /jvmdump/$filename.dump 
    gzip /jvmdump/$filename.dump 
    cd /jvmdump/
    find /jvmdump/*.gz -mtime +1 -exec rm -rf {} \;
    # 清理一天之前的dump文件. 注意这个命令要慎用 出问题需要跑路. 
    

    获取其他统计信息

    export JAVA_HOME=/app/server/runtime/java/x86_64-linux/
    export PATH=/app/server/runtime/java/x86_64-linux/bin/:$PATH
    
    if [ ! -d /jvmdump ]; then
    mkdir -p /jvmdump
    fi
    
    dumptime=`date +%Y%m%d%H%M`
    dumpid=`jps |grep caf-boot|awk '{print $1}' |head -n 1`
    
    if  [[ ! $dumpid ]]; then
    dumpid=`jps |grep PropertiesLauncher|awk '{print $1}' |head -n 1`
    fi
    
    # 需要区分正常启动还是优雅启动
    echo $dumpid
    echo $dumptime
    filename=$dumptime"_"$dumpid
    echo $filename
    
    jcmd $dumpid VM.uptime >>/jvmdump/trace_$filename.log
    jcmd $dumpid VM.flags>>/jvmdump/trace_$filename.log
    jcmd $dumpid Thread.print>>/jvmdump/trace_$filename.log
    jcmd $dumpid GC.class_histogram >>/jvmdump/trace_$filename.log
    jcmd $dumpid GC.heap_info >>/jvmdump/trace_$filename.log
    # 抓取信息到指定路径..
    
  • 相关阅读:
    2009 中国软件技术英雄会
    《致加西亚的信》一书中的一个隐蔽错误
    英文版XP不能打开带有中文路径的chm文件的解决办法
    NetBeans 时事通讯(刊号 # 49 Mar 17, 2009)
    对《致加西亚的信》的异议
    NetBeans 时事通讯(刊号 # 49 Mar 17, 2009)
    Linux运行时I/O设备的电源管理框架
    groovy正则提取完整版本
    Linux 流量监控软件 NetHogs
    Re: 在北京待着到底为了什么
  • 原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/16225278.html
Copyright © 2020-2023  润新知