说明

  • 产品最近有一些问题,想着能够每隔一段时间抓取一下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
# 抓取信息到指定路径..

计划任务方式定期获取jvm dump的方法的更多相关文章

  1. Yii2 提供可以用属性的方式去获取类的一个方法

    刚开始用 Yii 的小朋友可能对下面的写法非常疑惑: public function actionIndex() { $user = User::find()->where(['name'=&g ...

  2. 现代JVM内存管理方法的发展历程,GC的实现及相关设计概述(转)

    JVM区域总体分两类,heap区和非heap区.heap区又分:Eden Space(伊甸园).Survivor Space(幸存者区).Tenured Gen(老年代-养老区). 非heap区又分: ...

  3. 获取JVM的dump文件

    获取JVM的dump文件的两种方式 1. JVM启动时增加两个参数: #出现 OOME 时生成堆 dump: -XX:+HeapDumpOnOutOfMemoryError #生成堆文件地址: -XX ...

  4. MySQL统计信息以及执行计划预估方式初探

    数据库中的统计信息在不同(精确)程度上描述了表中数据的分布情况,执行计划通过统计信息获取符合查询条件的数据大小(行数),来指导执行计划的生成.在以Oracle和SQLServer为代表的商业数据库,和 ...

  5. Oracle查看SQL执行计划的方式

    Oracle查看SQL执行计划的方式     获取Oracle sql执行计划并查看执行计划,是掌握和判断数据库性能的基本技巧.下面案例介绍了多种查看sql执行计划的方式:   基本有以下几种方式: ...

  6. 获取JVM转储文件的Java工具类

    在上期文章如何获取JVM堆转储文件中,介绍了几种方法获取JVM的转储文件,其中编程方法是里面唯一一个从JVM内部获取的方法.这里就不演示了其他方法获取正在运行的应用程序的堆转储,重点放在了使用编程来获 ...

  7. php cli方式下获取服务器ip

    (未整理....) (1)php cli方式下获取服务器ip [php]  function getServerIp(){          $ss = exec('/sbin/ifconfig et ...

  8. php在cli和cgi方式下获取服务器ip的实例

    php cli方式下获取服务器ip php内核没有提供这样的命令,需要借助linux中的命令ifconfig来实现,如下两个函数代码: function getServerIp(){          ...

  9. JS(原生js和jq方式)获取元素属性(自定义属性),删除属性(自定义属性)

    JS(原生js和jq方式)获取元素属性(自定义属性),删除属性(自定义属性) 以下内容: 一.获取元素的属性 二.设置元素的属性 三.删除元素的属性 一.获取元素的属性 1-原生JS 获取属性 .ge ...

  10. JAVA代码中获取JVM信息

    一.JAVA中获取JVM的信息 原理,利用JavaSDK自带的ManagementFactory类来获取. 二.获取信息 1.获取进程ID @Test public void test1() { Ru ...

随机推荐

  1. Golang代码测试:一点到面用测试驱动开发

    摘要:TDD(Test Driven Development),测试驱动开发.期望局部最优到全局最优,这个是一种非常不错的好习惯. 了解Golang的测试之前,我们先了解一下go语言自带的测试工具. ...

  2. 云图说 | 华为云医疗智能体智联大健康:AI医学影像

    摘要:华为云医疗智能体面向医学影像领域,提供影像智能标注.算法开发和AI辅助诊断服务. 本文分享自华为云社区<[云图说]第208期 医疗智能体 智联大健康:AI医学影像>,原文作者:阅识风 ...

  3. Github 自建一个 Helm Charts 库

    前言 在构建私有的 charts 仓库之前,有几个先决条件: Helm 已经安装,版本号是 v3 拥有一个 Github 账号 初始化仓库 在 github 仓库上新建一个仓库,我这里命名为 helm ...

  4. 【Go】函数高级 包的使用 gin框架入门 if-else 循环 switch 数组

    目录 昨日回顾 今日内容 1 函数高级 2 包的使用 3 gin框架使用 4 if-else 5 循环 6 switch 7 数组 昨日回顾 # 1 go 基础数据类型 -数字:整数,正整数,浮点数, ...

  5. Java23种设计模式学习笔记

    创建型模式:关注对象的创建过程 1.单例​模式: 保证一个类只有一个实例,并且提供一个访问该实例的全局访问点 主要: 饿汉式(线程安全,调用效率高,但是不能延时加载) 懒汉式(线程安全,调用效率不高, ...

  6. 【收藏】Stable Diffusion 制作光影文字效果

    大家对于最近 Stable Diffusion 不断出新的视觉"整活"印象都很深刻,很多人对最近比较流行的制作光影文字很感兴趣,制作光影文字可以作为进阶 Stable Diffus ...

  7. Vue3.0 + Element Plus整合实战

    mall-vue3-manage 基于vue3.0 + Element Plus. 整合最新的 Echarts5 强劲的渲染引擎.富文本编辑器 Wangeditor 的后端管理项目. 版本 vue 3 ...

  8. freeswitch的mod_xml_curl模块

    概述 freeswitch是一款简单好用的VOIP开源软交换平台. 随着fs服务的增多,每一台fs都需要在后台单独配置,耗时耗力,心力憔悴. 如果有一个集中管理配置的配置中心,统一管理所有fs的配置, ...

  9. 线段树 hdu 4027

    ***又是超时的问题,当一个区间全是1时,再去开方和不开方是一样的,所以在这一步不需要再往底层递归了*** #include <iostream> #include <cstdio& ...

  10. 线性代数 · 矩阵 · Matlab | Cholesky 分解代码实现

    (搬运外网的代码,非原创:原网址 ) (其实是专业课作业,但感觉国内博客没有合适的代码实现,所以就搬运到自己博客了) 背景 - Cholesky 分解: 若 A 为 n 阶实对称正定矩阵,则存在非奇异 ...