通过写脚本的方式自动获取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
可以简单看一个打印结果信息.
大概十秒左右收集完信息

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

文档的末尾有简单的排序信息:
可以看到这十秒钟之类的进程占用信息有了变化.

通过写脚本的方式自动获取JVM内的进程堆栈信息等内容的更多相关文章
- jmeter手写脚本,使用正则获取cookie(禁用cookies管理器)
注:这里以bugfree为例 1.bugfree登录时会有重定向,这会导致每个URL都会有.因此要手动获取cookie的时候,需要去掉重定向勾选 正则获取动态PHPsession 获取到值后,放到信息 ...
- linux 获取shell内置命令帮助信息 help xx
shell,命令解释器 shell内置命令有cd/umask/pwd等 help shell内置命令适用于所有用户获取shell内置命令的帮助信息help umaskhelp if
- 调用脚本的方式自动的创建或者是更新oracle数据库自带的Seq序列号的值
执行脚本: CREATE OR REPLACE PACKAGE PKG_QUERY IS -- Author : ADMINISTRATOR -- Created : 2016/12/8 星期四 10 ...
- 一个很笨的方法,写脚本来实现自动调dmp,找有用的数据
很久很久以前用到的方法, 方法挺笨的,但是算是比较实用吧. 全自动的调试dmp,最后只要结果. 谁用得着就给谁看吧. 这里需要两个脚本 1:启动脚本,是一个批处理文件,用来启动调试器,来加载dmp和调 ...
- 自动获取IMC系统所有网络设备资产信息
1 #coding=utf8 2 3 """ 4 CMDB接口调用 5 """ 6 import csv 7 import json 8 i ...
- 获取系统中所有进程&线程信息
读书笔记--[计算机病毒解密与对抗] 目录: 遍历进程&线程程序 终止进程 获取进程信息 获取进程内模块信息 获取进程命令行参数 代码运行环境:Win7 x64 VS2012 Update3 ...
- Appium自动获取 Android 设备 id 和包名等信息(python)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/zhusongziye/article/d ...
- centos shell编程4【分发系统】 服务器标准化 mkpasswd 生成密码的工具 expect讲解 expect传递参数 expect自动同步文件 expect指定host和要同步的文件 expect文件分发系统 expect自动发送密钥脚本 Linux脚本执行方式 第三十八节课
centos shell编程4[分发系统] 服务器标准化 mkpasswd 生成密码的工具 expect讲解 expect传递参数 expect自动同步文件 expect指定host和要 ...
- 脚本设置IP bat 命令行设置自动获取IP和固定IP
由于办公室网络需要固定IP和DNS才能上网, 在连接公共网络或者家里又需要自动获取IP和DNS才能上网. 频繁手动切换很麻烦,就搞了两个脚本一键设置. 1.新建文本文件, 命名为固定IP.bat 复制 ...
- Linux:自动获取静态IP地址,清空iptable,修改selinux脚本
自动获取静态IP地址,清空iptable,修改selinux脚本 环境:VMware 平台:centos6.8全新 功能: 1)应用ifconfig -a,route -n,cat /etc/reso ...
随机推荐
- 多模态AI开发套件HiLens Kit:超强算力彰显云上实力
摘要:Huawei HiLens Kit是一款端云协同多模态AI开发套件,支持图像.视频.语音等多种数据分析与推理计算,可广泛用于智能监控.智能家庭.机器人.无人机.智慧工业.智慧门店等分析场景. 在 ...
- GaussDB(DWS)集群中寻找节点CPU占用高的语句
摘要:本文主要通过实例讲解如何通过gs_cpuwatcher.sh 脚本寻找CPU占用高语句. 本文分享自华为云社区<GaussDB(DWS) gs_cpuwatcher.sh 脚本如何寻找CP ...
- 知道ThreadLocal吗?一起聊聊到底有啥用
摘要:ThreadLocal是 java 提供的一个方便对象在本线程内不同方法中传递和获取的类.用它定义的变量,仅在本线程中可见和维护,不受其他线程的影响,与其他线程相互隔离. 本文分享自华为云社区& ...
- 云图说|分布式事务管理DTM:“买买买”背后的小帮手
摘要:分布式事务管理DTM通过提供高性能.高可靠.低侵入等核心价值,可以更好的帮助企业应对微服务场景带来的一致性问题. 本文分享自华为云社区<[云图说]第224期 分布式事务管理DTM,&quo ...
- 教你从零搭建Web漏洞靶场OWASP Benchmark
摘要:Owasp benchmark 旨在评估安全测试工具的能力(准确率.覆盖度.扫描速度等等),量化安全测试工具的扫描能力,从而更好得比较各个安全工具优缺点. 本文分享自华为云社区<Web漏洞 ...
- NDPQ(NDP+PQ),定义分布式数据库新方向
摘要:云服务提供商构建新的云原生关系数据库系统,专门为云基础架构设计,通常采用将计算和存储分离到独立扩展的分布式层的设计. 本文分享自华为云社区<性能提升100倍!GaussDB(for MyS ...
- 火山引擎在行为分析场景下的ClickHouse JOIN优化
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 背景 火山引擎增长分析DataFinder基于ClickHouse来进行行为日志的分析,ClickHouse的主要 ...
- MongoDB 客户端工具,Studio3T 无法启动
阿里云 MongoDB 创建库添加用户并授权 MongoDB 客户端工具,Studio3T 无法启动,原因可能是因为本地的 java 版本导致 C:\Users\cj218>java -vers ...
- Python 3.12 抢先看——关于 f-string 的改动
Python 3.12 抢先看--关于 f-string 的改动 哈喽大家好,我是咸鱼 相信小伙伴们对 python 中的 f-string 都不陌生 f-string 是格式化字符串的缩写,是以小写 ...
- map三层循环遍历,操作数据
let tempArr = this.oldCityList.map(item => { return { value: item.code, text: item.name, type: it ...