计划任务方式定期获取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
# 抓取信息到指定路径..
计划任务方式定期获取jvm dump的方法的更多相关文章
- Yii2 提供可以用属性的方式去获取类的一个方法
刚开始用 Yii 的小朋友可能对下面的写法非常疑惑: public function actionIndex() { $user = User::find()->where(['name'=&g ...
- 现代JVM内存管理方法的发展历程,GC的实现及相关设计概述(转)
JVM区域总体分两类,heap区和非heap区.heap区又分:Eden Space(伊甸园).Survivor Space(幸存者区).Tenured Gen(老年代-养老区). 非heap区又分: ...
- 获取JVM的dump文件
获取JVM的dump文件的两种方式 1. JVM启动时增加两个参数: #出现 OOME 时生成堆 dump: -XX:+HeapDumpOnOutOfMemoryError #生成堆文件地址: -XX ...
- MySQL统计信息以及执行计划预估方式初探
数据库中的统计信息在不同(精确)程度上描述了表中数据的分布情况,执行计划通过统计信息获取符合查询条件的数据大小(行数),来指导执行计划的生成.在以Oracle和SQLServer为代表的商业数据库,和 ...
- Oracle查看SQL执行计划的方式
Oracle查看SQL执行计划的方式 获取Oracle sql执行计划并查看执行计划,是掌握和判断数据库性能的基本技巧.下面案例介绍了多种查看sql执行计划的方式: 基本有以下几种方式: ...
- 获取JVM转储文件的Java工具类
在上期文章如何获取JVM堆转储文件中,介绍了几种方法获取JVM的转储文件,其中编程方法是里面唯一一个从JVM内部获取的方法.这里就不演示了其他方法获取正在运行的应用程序的堆转储,重点放在了使用编程来获 ...
- php cli方式下获取服务器ip
(未整理....) (1)php cli方式下获取服务器ip [php] function getServerIp(){ $ss = exec('/sbin/ifconfig et ...
- php在cli和cgi方式下获取服务器ip的实例
php cli方式下获取服务器ip php内核没有提供这样的命令,需要借助linux中的命令ifconfig来实现,如下两个函数代码: function getServerIp(){ ...
- JS(原生js和jq方式)获取元素属性(自定义属性),删除属性(自定义属性)
JS(原生js和jq方式)获取元素属性(自定义属性),删除属性(自定义属性) 以下内容: 一.获取元素的属性 二.设置元素的属性 三.删除元素的属性 一.获取元素的属性 1-原生JS 获取属性 .ge ...
- JAVA代码中获取JVM信息
一.JAVA中获取JVM的信息 原理,利用JavaSDK自带的ManagementFactory类来获取. 二.获取信息 1.获取进程ID @Test public void test1() { Ru ...
随机推荐
- Karmada v1.2发布:开启全文本搜索新纪元
摘要:Karmada v1.2 版本对调度器能力做了较大增强,初步提供了分布式搜索引擎支持,此外还借助聚合API提供了诸如 logs, watch等实用的命令行工具,资源解释器(Resource In ...
- OpenHarmony移植案例与原理:如何适配服务启动引导部件bootstrap_lite
摘要:本文介绍移植开发板时如何适配服务启动引导部件bootstrap_lite,并介绍相关的运行机制原理. 本文分享自华为云社区<OpenHarmony移植案例与原理 - startup子系统之 ...
- 性能持续突破!火山引擎ByteHouse上线向量检索能力
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 随着LLM技术应用及落地,数据库需要提高向量分析以及AI支持能力,向量数据库及向量检索等能力"异军突 ...
- 电子签章Java后端与前端交互签名位置计算
电子签章过程中存在着在网页上对签署文件进行预览.指定签署位置.文件签署等操作,由于图片在浏览器上的兼容性和友好性优于PDF文件,所以一般在网页上进行电子签章时,会先将PDF文件转换成图片,展示给用户. ...
- 详解 SSL(一):网址栏的小绿锁有什么意义?
随着互联网的飞速发展,用户信息泄漏.数据泄露等安全问题的事件频繁发生.这一切不一定是网站的问题,有时候可能是自己不经意间泄露了自己的信息.例如钓鱼网站就是日常生活中比较常见的,钓鱼网站和真实网站差别细 ...
- 原创内容屡屡被盗?从源头对资源盗用说NO
在这个信息化的时代,资源被盗用是一件很让人厌恶,但又很常见的事.比如,之前郭敬明的小说<梦里花落知多少>剽窃庄羽小说<圈里圈外>一事,虽然郭敬明通过个人微博向庄羽道歉,并表示& ...
- 【CJsonObject】C++ JSON 解析器使用教程
能选封装的尽量不使用底层的 一.CJsonObject 简介 CJsonObject 是 Bwar 基于 cJSON 全新开发一个 C++ 版的 JSON 库. CJsonObject 的最大优势是轻 ...
- 第十二届蓝桥杯C++B组 A~H题题解
本次题解格式参考 墨羽魂韶 本文所用的试题: 第十二届蓝桥杯大赛软件赛省赛_CB.pdf 最后编辑时间 2021年4月29日 21:27:46 2022 年 4月 8号 15点13分 填空题答案速览 ...
- 第九届蓝桥杯(2018)C/C++大学A组省赛题解
第一题:分数 1/1 + 1/2 + 1/4 + 1/8 + 1/16 + - 每项是前一项的一半,如果一共有20项, 求这个和是多少,结果用分数表示出来. 类似:3/2 当然,这只是加了前2项而已. ...
- hdu 5547
***题意:4*4数独,要求在同一行同一列不能有相同的数字,另外在2*2的小单元里也不能有相同的数字 思路:DFS暴力搜索, 每个位置填1-4,递归回溯,判断是否符合条件,递归到最后一个位置+1则输出 ...