美文网首页
线上问题定位

线上问题定位

作者: 韭菜待收割 | 来源:发表于2019-10-15 17:18 被阅读0次

1、简单的cpu飚高问题定位脚本

#!/bin/bash

# 入参只有一个,即目标java的pid,如果没有,则默认找cpu最高的java进程
if [ -z "$1" ]; then
        ### 1.先找到消耗cpu最高的Java进程 ###
        pid=`ps -eo pid,%cpu,cmd --sort=-%cpu | grep java | grep -v grep | head -1 | awk 'END{print $1}' `
        if [ "$pid" =  ""  ]; then
                echo "无Java进程,退出。"
                exit
        fi
else
        pid=$1
fi

### 2.生成dump后的文件名 ###
curTime=$(date +%Y%m%dT%H:%M:%S)
# jstack后的文件会加上时间,便于对一个进程dump多次
dumpFilePath="/tmp/pid-$pid-$curTime.jstack"
echo -e "cpu最高的java进程: "`jps | grep $pid`"\n" > $dumpFilePath

### 3.取到该进程的所有线程及其cpu(只显示cpu大于0.0的线程) ###
echo -e "进程内线程cpu占比如下(不显示cpu占比为0的线程):\n" >> $dumpFilePath
ps H -eo pid,tid,%cpu --sort=-%cpu | grep $pid | awk '$3 > 0.0 {totalCpu+=$3; printf("nid=0x%x, cpu=%s\n", $2, $3) >> "'$dumpFilePath'"}
END{printf("cpu总占比:%s\n\n", totalCpu) >> "'$dumpFilePath'"}'

### 4.dump该进程 ###
echo -e "如下是原生jstack后的结果:\n" >> $dumpFilePath
jstack -l $pid >> $dumpFilePath

echo "dump成功,请前往查看(文件名包含时间,为了采集更准确,可以多执行几次该命令):" $dumpFilePath

exit

相关文章

  • 线上问题定位

    1、简单的cpu飚高问题定位脚本

  • 游戏服务器线上问题排查定位实战

    线上问题排查定位实战(游戏服务器) 监控先行 线上常见问题 问题排查、定位、解决 参考、补充 Q & A 监控先行...

  • btrace线上定位问题

    开发环境可以local debug,测试环境可以remote debug,线上环境只能看看log了, debug肯...

  • 线上问题定位追溯

    问题定位追溯 准备方面 思路:拨开云雾见天日,守得云开见月明 --《送征雁》 工具:工欲善其事,必先利其器 -...

  • 前端Debug的小技巧

    一、怎么快速定位线上问题? 在工作之后,我们经常需要定位线上问题,但是本地又无法复现。 我将给小伙伴们介绍两种方法...

  • Java线上问题定位解决

    本文资料网上搜集整理。 Java 应用系统常见的线上问题分为如下几种: 进程退出 OutOfMemory问题 CP...

  • 如何定位线上问题

    1. 使用top命令查看进程使用资源情况。 2.使用ps - ef | grep PID 查看对应进程真实身份 3...

  • [转]Java线上问题排查思路及Linux常用问题分析命令学习文

    Java线上问题排查思路及Linux常用问题分析命令学习 前言 之前线上有过一两次OOM的问题,但是每次定位问题都...

  • 日志

    日志 日志:记录程序的运行轨迹,方便查找关键信息,也方便快速定位解决问题可用于 问题追踪:辅助排查和定位线上问题,...

  • 如何定位前端线上问题

    如何定位前端线上问题(如何排查前端生产问题)[https://www.cnblogs.com/warm-stran...

网友评论

      本文标题:线上问题定位

      本文链接:https://www.haomeiwen.com/subject/qzgsmctx.html