我相信做技术的都会遇到过这样的问题,生产环境服务遇到宕机的情况下如何去分析问题?比如说JVM内存爆掉、CPU持续高位运行、线程被夯住或线程deadlocks,面对这样的问题,如何在生产环境第一时间跟踪分析与定位问题很关键。下来让我们看看通过如下步骤在第一时间分析问题。

CPU占用较高场景

收集当前CPU占用较高的线程信息,执行如下命令:

top -H -p PID -b -d 1 -n 1 > top.log

top -H -p PID

结果如下:

上图显示的都是某一个进程内的线程信息,找到cpu消耗最高的线程id,再配合jstack来分析耗cpu的代码位置,那如何分析呢?

先执行jstack获取线程信息

jstack -l PID > jstackl.log

将PID(29978)转成16进制:0x751a,16进制转换工具很多可以在线随便搜索一个或者基本功好的自己计算。

打开jstackl.log,查找nid=0x751a的信息,这样就定位到了具体的代码位置,这里由于是安全原因我就不贴图了。

通过上面的步骤就可以轻松的定位那个线程导致cpu过高,当然也可以通过其他方式来定位,下面介绍一个快捷的方式

#线程cpu占用

#!/bin/bash

[ $# -ne 1 ] && exit 1

jstack $1 >/tmp/jstack.log

for cpu_tid in `ps -mp $1 -o THREAD,tid,time|sort -k2nr| sed -n '2,15p' |awk '{print$2"_"$(NF-1)}'`;do

cpu=`echo $cpu_tid | cut -d_ -f1`

tid=`echo $cpu_tid | cut -d_ -f2`

xtid=`printf "%x\n" $tid`

echo -e "\033[31m========================$xtid $cpu%\033[0m"

cat /tmp/jstack.log | sed -n -e "/0x$xtid/,/^$/ p"

#cat /tmp/jstack.log | grep "$xtid" -A15

done

rm /tmp/jstack.log

上述命令会以百分比的方式来显示每个线程的cpu消耗百分比,这里我就不贴图了,谁用谁知道。

内存消耗过高场景

收集当前活跃对象数据量信息,执行以下命令获取

jmap -histo:live pid > jmaplive.log

ps. jmap -histo:live 数据可以多进行几次,比如说间隔几分钟输出一次,然后对比两个文件的差异可以看出gc回收的对象,如果多次结果没有差异并且gc频繁执行,证明剩余对象在引用无法gc回收,这时就需要对服务进行限流给服务喘气的机会。

或者收集dump信息,通常这种获取方式需要较长时间执行,并产生大容量的dump文件,我们会考虑逐步废掉通过这个文件来分析。执行以下命令获取

jmap -dump:file=./dump.mdump pid

dump文件通过MAT工具来进行内存泄漏分析。

线程、内存分析工具

上面说过通过jstack生成的线程文件是可以通过工具来直接打开可视化分析的,这里我推荐使用:tda(Thread Dump Analyzer)这个工具可以自行搜索下载。

通过jmap -dump生成的dump文件也是可以通过工具来进行可视化分析的,这里我推荐使用MAT(Memory Analysis Tools)它可以通过eclipse plugin的方式使用或者独立的下载安装包使用。

生产环境下JAVA进程高CPU占用故障排查

问题描述:生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高. 问题分析:1,程序属于CPU密集型,和开发沟通过, ...

生产环境JAVA进程高CPU占用故障排查

问题描述:生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高. 问题分析:1,程序属于CPU密集型,和开发沟通过, ...

生产环境下JAVA进程高CPU占用故障排查---temp

问题描述:生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高. 问题分析:1,程序属于CPU密集型,和开发沟通过, ...

IBM Thread and Monitor Dump Analyzer for Java解决生产环境中的性能问题

这个工具的使用和 HeapAnalyzer 一样,非常容易,同样提供了详细的 readme 文档,这里也简单举例如下: #/usr/java50/bin/java -Xmx1000m -jar jca ...

【生产环境】Tomcat运行一段时间后访问变慢分析历程

环境运行一天或者几天,网站访问就很卡,手机端app访问页面出现白屏.Tomcat运行一段时间后访问变慢,但是cpu,内存都正常.日志也是发现不了啥.... 问题的原先分析 1.环境配置(cpu,内存, ...

[刘阳Java]_避开环境配置快速的使用Java的开发工具_第5讲

我们一般学习Java都应该遵循通过系统的命令工具来编译Java程序,然后对编译好Java程序进行运行,这个是非常好的习惯.但是随着后期学习Java技术的深入我们也得像Java的IDE工具屈服.所以,可 ...

生产环境提升rman备份速度----启动块跟踪

生产环境提升rman备份速度----启动块跟踪 [环境] AIX(5300-08).oracle10g(10.2.0.1.0-64bit) [目标] 因为生产环境数据量较大,欲加快rman备份的速度 ...

java生产环境增量发版陷阱【原】

前言 在生产环境,我们为了降低发版风险,一般都只做增量发布,不做全量发布. 除非项目只有一到两人开发,对时间线和代码脉络结构一清二楚,才可全量发布. 然而增量发布也是有一定隐藏陷阱在里面的,以下就是笔 ...

JAVA中调用LevelDB用于Linux和Window环境下快速存储KV结构

一.简介 JAVA中调用LevelDB用于Linux和Window环境下快速存储KV结构 二.依赖

java生产问题快速定位_生产环境如何快速跟踪、分析、定位问题-Java相关推荐

  1. 生产排程系统_生产计划排程APS系统中排产算法的探讨

    点击上方 MES百科 关注我们 e-works鼓励原创,如需投稿请参看首页"原创投稿"说明. ✎导 读 生产计划排程既有相对简单的算法,例如,最短交货期算法,最短工序算法等,也有复 ...

  2. java线上问题定位_线上java.lang.OutOfMemoryError问题定位三板斧

    OOM(OutOfMemoryError) 问题归根结底三点原因: 本身资源不够 申请的内存太多 资源耗尽 解决思路,换成Java服务分析,三个原因也可以解读为: 有可能是内存分配确实过小,而正常业务 ...

  3. 生产管理软件实施流程_生产管理软件实施过程会遇到哪些问题?

    随着我国工业化和信息化的快速发展,各种各样的企业管理信息系统得到了广泛的应用,企业管理系统从最初的MRP(物料需求计划)系统发展成MRPⅡ(制造资源计划)系统进而发展成为高度集成的生产管理软件(企业资 ...

  4. java.线程池 线程数_如何在线程“ main”中修复异常java.lang.NoClassDefFoundError:Java中的org / slf4j / LoggerFactory...

    java.线程池 线程数 此错误表示您的代码或您在应用程序中使用的任何外部库都在使用SLF4J库 (一个开放源代码日志记录库),但无法找到所需的JAR文件,例如slf4j-api-1.7.2.jar因 ...

  5. java二级考试真题_计算机等级考试真题2(JAVA)

    1. D (A)类属于JAVA语言的引用数据类型. (B)接口属于JAVA语言的引用数据类型. (C)数组属于JAVA语言的引用数据类型. (D)double不属于JAVA语言的引用数据类型. 2. ...

  6. wordpress如何让百度快速收录_网站文章如何快速被收录?百度快速收录功能可以试一下...

    摘要: 近日百度站长管理平台推出了快速收录功能,据了解该功能目前仅对部分优质的站点开放,但是开通熊掌号的站点也可以直接继承过来的.下面让我们一起来了看看吧. 一.百度快速收录上线 2020年5月13日 ...

  7. java如何实现系统定位_如何快速定位到系统中某一功能的具体实现

    需求描述 我们有时候需要阅读查询某个系统功能是怎么实现的,以达到更了解这个系统某一操作的具体实现原理,帮助我们快速理解程序和快速调试. 系统是采用传统的架构Struts2+Spring+ hibern ...

  8. java 通过手机 实时定位_恒高借助uwb定位技术,让机房复杂问题化繁为简

    ↑↑↑ 点上面蓝字 , 快关注我吧! ●RTLS● 恒高数字机房人员定位系统,采用UWB定位技术,通过在机房内部署一定数量的定位基站,机房巡检人员佩戴标签卡的形式,实时获取人员精确位置,精度高达10c ...

  9. java netty能做什么_开发:Netty快速入门,一看就懂!

    很早以前就写过关于 Netty 的使用,最近发现还有网友在看之前写的那篇 Netty 文章,个人感觉那时候写的很粗糙,怕影响同行的阅读质量,所以决定重新写一些关于 Netty 的文章,补充以前的不足. ...

最新文章

  1. 数据结构与算法 整理笔记---二叉搜索树
  2. Libvirt — Live Migration 的实现原理
  3. 【深度学习】nnU-Net(优秀的前处理和后处理框架)
  4. Pig安装与配置教程
  5. 济南长清104国道科目三考试流程(转载)
  6. 用反射写的取属性值和设置属性值得方法
  7. P3369-[模板]普通平衡树【Splay】
  8. 是否可以限制蓝牙传输距离_技术文章—关于蓝牙传输范围的常见误解
  9. 互联网日报 | 滴滴在上海开放自动驾驶服务;腾讯游戏年度发布会线上举行;微软宣布将永久关闭实体店...
  10. python函数的参数可以接收哪些类型的数据_Python参数类型以及实现isOdd函数,isNum函数,multi函数,isPrime函数...
  11. 第二次冲刺阶段第三天
  12. python解析nmea0183协议获取GPS定位信息
  13. 通信光缆故障检测如何进行检测?
  14. 渗透测试工程师可以写进简历的技能介绍部分
  15. 水果店开业如何做开店活动,新水果店开业需要做哪些促销活动
  16. 【附源码】Java计算机毕业设计安卓和悦少年文明礼仪监管APP(程序+LW+部署)
  17. 【开学季】给计算机专业后辈们的一些忠告...
  18. 基于PHP的旅游资讯管理系统
  19. 哨兵二号数据offline_科学网—利用ENVI 5.3读取哨兵2号(Sentinel-2)L1C数据 - 朱永超的博文...
  20. PM 如何进行测试?

热门文章

  1. 微信作为一种提供即时通讯服务器,Golang 写的即时通讯服务器 im(服务组件形式)...
  2. 6a标准 api_【阀门标准】API SPEC 6A CHINESE-2010中文版.pdf
  3. 1.2.3 TCP/PI参考模型(应用层、传输层、网际层、网络接口层)、五层参考模型(应用层、传输层、网络层、数据链路层、物理层)、OSI与TCP/IP参考模型比较
  4. mysql5.7.20linux安装,linux下 mysql5.7.20安装(精华)
  5. 时间复杂度、渐进记法、主定理
  6. linux同步硬件和系统时钟,liunx系统下时钟不同步会出现问题 怎么同步Linux 的系统时钟和硬件时钟?...
  7. cadence原理图封装pin名称重复_Cadence原理图库文件引脚名重复处理方法介绍
  8. 用来处理python字典的方法_python字典的常用方法总结
  9. Tesseract-OCR 字符识别---样本训练 [转]
  10. jmeter学习笔记(十三)debug调试工具