通过写脚本的方式自动获取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 ...
随机推荐
- BugBuilder: 高质量大规模缺陷库自动构建方法
摘要:本文提出并开发了高质量大规模缺陷库全自动构建方法BugBuilder,自动从版本控制系统中的人为编写的补丁中提取完整且精准的缺陷修复补丁. 本文分享自华为云社区<BugBuilder: 高 ...
- Multi-Architecture镜像制作指南已到,请查收!
摘要:使用Multi-Architecture镜像,可以让docker根据系统架构去拉取对应的镜像,服务的部署脚本等可以在不同架构的系统间使用相同的配置,减化服务配置,提高了服务在不同系统架构间的一致 ...
- 看图学NumPy:掌握n维数组基础知识点,看这一篇就够了
摘要:NumPy是Python的最重要的扩展程序库之一,也是入门机器学习编程的必备工具.国外有位程序员讲NumPy的基本运算以图解的方式写下来,让学习过程变得轻松有趣. NumPy是Python的最重 ...
- 再谈BOM和DOM(3):DOM节点操作-元素样式修改及DOM内容增删改查
操作节点,先得选择节点,就得知道节点选择器与DOM节点查找 DOM节点选择器 W3C提供了比较方便的定位节点的方法和属性 getElementById() 一个参数:元素标签的ID getElemen ...
- 十大 CI/CD 安全风险(一)
CI/CD 环境.流程和系统是现代软件组织的核心.他们将代码从开发工程师的工作站传递到生产环境.结合 DevOps 和微服务架构的兴起,CI/CD 系统和流程重塑了工程生态系统: 技术堆栈更加多样化, ...
- why哥这里有一道Dubbo高频面试题,请查收。
这是why的第 64 篇原创文章 荒腔走板 大家好,我是 why,欢迎来到我连续周更优质原创文章的第 64 篇.老规矩,先荒腔走板聊聊其他的. 上面这图是我之前拼的一个拼图. 我经常玩拼图,我大概拼了 ...
- SpringBoot WebService 及 注意项
SpringBoot WebService 源代码:https://gitee.com/VipSoft/VipWebService SpringBoot 版本 <version>2.3.0 ...
- JupyterLab 这插件太强了,Excel灵魂附体
终于把 jupyter notebook 玩明白了 JupyterLab 终于出了 Windows 桌面版 今天向大家介绍一款很有意思的 JupyterLab 插件 -- Mito Mito是Jupy ...
- cookie与session简介 django操作cookie django操作session
目录 cookie与session简介 早期cookies 随机字符串解决cookies安全问题 禁止浏览器保存cookies django操作cookie set_cookie set_signed ...
- VMware15.5安装Ubuntu20.04
一.安装前的准备 1.下载好Ubuntu20.04的镜像文件,直接从官网下载就好,激活密匙. 2.准备好VMware软件,这里就忽略安装过程了. 二.建立虚拟机以及开启正式的Ubuntu安装过程 参考 ...