如何top抓取Java进程的资源使用信息?

Bash

1 前言

一个问题,一篇文章,一出故事。
笔者生产环境有台Tomcat的服务由于需要分析内存越来越大的原因,于是需要抓取程序堆转储快照。

2 最佳实践

2.1 创建管理脚本

vim ~/scripts/tomcat-top.sh

加入如下配置,

#!/bin/bash

setTime=`date +"%Y-%m-%d %H:%M:%S"`
topLog="/var/log/tomcat/top/top-$setTime.log"
javaUser="tomcat"
javaHome="/usr/local/jdk-15.0.2"

javaPid=`"$javaHome/bin/jps" | grep Bootstrap | awk -F ' ' '{print $1}'`

if [ ! -d `dirname "$topLog"` ]; then
        mkdir -p `dirname "$topLog"`
fi

top -b -n1 -Hp "$javaPid" > "$topLog"

find `dirname "$topLog"` -type f -ctime -7 -name "top-*.log" -exec ls -l {} \;
#find `dirname "$topLog"` -type f -ctime +7 -name "top-*.log" -exec rm -f {} \;

以上主要参数定义如下,
– 核心命令“top”通过Tomcat的PID抓取Tomcat的top信息
– 非核心命令“find”找出超过7天的数据并删除,安全我们默认配置显示7天内备份的数据

2.2 创建脚本触发

crontab -e

加入如下配置,

*/5 * * * * sh ~/scripts/tomcat-top.sh
没有评论

发表回复

Bash
如何熟悉Base Shell的变量的间接引用?

1 前言 一个问题,一篇文章,一出故事。 笔者希望以一个变量名称去引用另一个变量,于是整理此文。 2 …

Bash
如何实现文件夹路径转纯数字符串?

1 前言 一个问题,一篇文章,一出故事。 由于由于需要设置某目录的配额,配额要求为每个目录指定一个项 …

Bash
如何统计Linux打开文件前10进程?

1 前言 一个问题,一篇文章,一出故事。 笔者生产环境有台服务最近压力比较大,打开的文件数量不断地往 …