linux监控java进程的cpu和线程快照脚本

news/2024/7/7 19:58:42

java进程的cpu和线程快照一般都会接入监控平台进行监控和查看,也可以通过命令在服务器查看:top -b -n 1 -Hp pid > 1.top && jstack pid > 1.stack,当然也可以通过shell脚本的方式将cpu和jstack指标记录输出到文件。

#每隔5秒钟检测一下CPU,当超过90的时候连续采集10分钟的top、stack、cpuinfo、iostat
if [ ! -d "result" ]; then mkdir result; fi
num=1;
prefix=`date -d "today" +"%H%M%S"`;   #文件前缀
while true; do
        realCpu=`top -b -n 1 -Hp $1 | sed -n '3,3p' | awk '{print $2}'`
        printf $(date -d "today" +"%Y%m%d.%H:%M:%S")" CPU: "$realCpu;
        CpuStatus=`echo $realCpu | awk '{if($0 > 90 ) print "high"; else print "low"}'`;    #注意这里设置阈值
        if [ $CpuStatus == "high" ]; then
                printf ", 大于90,开始采集10分钟堆栈..."
                for ((i=1;i<=120;i++)); do
                        top -b -n 1 -Hp $1 > ./result/$prefix-$num-"top"-$(date -d "today" +"%Y%m%d_%H%M%S").txt && jstack $1 > ./result/$prefix-$num-"stack"-$(date -d "today" +"%Y%m%d_%H%M%S").txt && cat /proc/cpuinfo > ./result/$prefix-$num-"cpuinfo"-$(date -d "today" +"%Y%m%d_%H%M%S").txt && iostat -x > ./result/$prefix-$num-"iostat"-$(date -d "today" +"%Y%m%d_%H%M%S").txt;
                        num=$(($num+1));
                                                if [ $i -lt 120 ]; then sleep 5; fi
                done
        fi
                printf "\n";
        find ./result/ -cmin +1440 -type f -exec rm -rf {} \;   #删除24小时前的文件
        sleep 5;

使用说明:

chmod 777 top.sh (上面的脚本);执行nohup ./top.sh pid & 
如果打堆栈的话会在当前目录下面新建result文件夹,只保留1天的;
如果有重启java进程的话这个脚本也需要重启,因为pid改变了。


http://lihuaxi.xjx100.cn/news/1401337.html

相关文章

Python web实战之 Django 的 MVC 设计模式详解

技术栈&#xff1a;Python、Django、HTML、CSS、JavaScript。 概要 在 Web 开发中&#xff0c;MVC&#xff08;Model-View-Controller&#xff09;模式是一种非常常见的设计模式&#xff0c;它可以帮助我们更好地管理代码&#xff0c;提高代码的可维护性。今天就介绍如何使用 …

2023年第四届“华数杯”数学建模思路 - 案例:最短时间生产计划安排

文章目录 0 赛题思路1 模型描述2 实例2.1 问题描述2.2 数学模型2.2.1 模型流程2.2.2 符号约定2.2.3 求解模型 2.3 相关代码2.4 模型求解结果 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; 最短时间生产计划模型 该模型出现在好几个竞赛赛题上&#x…

【Spring】Bean的作用域

根据 【动力节点】最新Spring框架教程&#xff0c;全网首套Spring6教程&#xff0c;跟老杜从零学spring入门到高级 以及老杜的原版笔记 https://www.yuque.com/docs/share/866abad4-7106-45e7-afcd-245a733b073f?# 《Spring6》 进行整理&#xff0c; 文档密码&#xff1a;mg9b…

Java:JDK8之后新的时间(推荐使用) LocalDate、LocalTime、LocalDataTime 的相关API

更新后的时间分类 LocalDate 的相关API //0、获取本地日期对象 LocalDate ld LocalDate.now();//年月日 system.out.println(ld) ;//1、获取日期对象中的信息 int year ld.getYear();//年 int month ld.getMonthValue(); //月(1-12) int day ld.getDayOfMonth();//日 int d…

使用Redis操作List数据结构的指南

系列文章目录 文章目录 系列文章目录前言一、什么是Redis List?二、List常用操作三、实际应用示例 - 实现消息队列总结前言 在本篇博客中,我们将深入探讨Redis中的List数据结构以及如何使用Redis的命令进行操作。Redis是一款高性能的开源键值存储系统,List是Redis支持的一种…

SpringBoot复习:(13)Banner是怎么打印出来的?

SpringApplication的run方法代码&#xff1a; public ConfigurableApplicationContext run(String... args) {long startTime System.nanoTime();DefaultBootstrapContext bootstrapContext createBootstrapContext();ConfigurableApplicationContext context null;configur…

通信笔记——最小移频键控MSK

由2FSK→MSK存在以下几点&#xff1a; 1、如何实现已调信号的码元正交&#xff1b;2、如何实现相位连续&#xff0c;不突变。 1、以2FSK一般表示法出发&#xff0c;推导得出两种频率的约束关系 正交条件&#xff1a; 积化和差公式有&#xff1a; 当载波频率比较高&#xff…

JavaScript学习 -- SM4算法应用实例

SM4算法&#xff0c;也被称为国密算法&#xff0c;是中国公布的一种高效且安全的对称加密算法。在JavaScript中&#xff0c;我们可以通过使用CryptoJS库来实现SM4算法的加密和解密。本篇博客将为您介绍如何在JavaScript中使用SM4算法&#xff0c;并提供一个实际的案例。 首先&…