应用出现问题怎么办之javacore

1 什么是javacore

javacore是JVM内所有线程信息的日志输出,通常又叫做thread dump,可以了解当前系统在做什么,对于问题分析还是会很有帮助;这个信息中包含线程的调用栈及线程的运行状态。执行thread dump获取javacore日志不会停止应用。

2 如何获取javacore

在新版本的JDK提供了jstack工具后,建议都使用该工具来获取javacore.使用jstack获取javacore的步骤如下:

使用jps得到java相关进程的pid,执行jps -v

得pid后,执行jstack -l  > javacore..log. 如:jstack -l 1772 > javacore.1772.log

Tips: 为了有一个比较,通常,会在间隔一定的时间后(如5s、10s,30s)多次取javacore。注意,此时应该使用 >> 以追加的方式重定向输出

-

另外,在Linux系统下,通过kill -3 也是获取javacore的方法。不过,该方法的日志输出不是很好确定。所以,如果可以的话,尽量使用jstack工具获取。

2.1 产生多个JavaCore的工具

输出多个Java Core的脚本

pids=`pgrep -f /home/MLF/TRS/jdk1.7.0_71/`

echo $pids

for (( c=1;c<=50;c++ ))

do

echo "操作系统密码" |sudo -S /home/MLF/TRS/jdk1.7.0_71/bin/jstack -l $pids > /home/MLF/TRS/TRSWCMV7/wcmlogs/javacore_$(date -d "yesterday" +"%Y%m%d%H%M%S")_$c.txt

# echo $c

#echo javacore_$(date -d "yesterday" +"%Y%m%d%H%M%S")_$c.txt

sleep 1

done


出现CPU占用很高或者发布时间执行很长时,一般都要用到JavaCore文件;

主要是基于不能在黑箱下分析问题,必须知道Tomcat当时在做什么;

JavaCore就可以反映出瞬时Java线程在作什么;

瞬间做什么不能说明问题,如果每次的JavaCore同一个线程都停留在同一行代码中,那么说明有问题

一般用jstack获取JavaCore

每隔1秒,输出一个JavaCore,总共输出50个JavaCore文件的Shell:

pids=`pgrep -f /home/MLF/TRS/jdk1.7.0_71/`

echo $pids

for (( c=1;c<=50;c++ ))

do

  echo "操作系统密码" |sudo -S /home/MLF/TRS/jdk1.7.0_71/bin/jstack -l $pids > /home/MLF/TRS/TRSWCMV7/wcmlogs/javacore_$(date -d "yesterday" +"%Y%m%d%H%M%S")_$c.txt

  # echo $c

  #echo javacore_$(date -d "yesterday" +"%Y%m%d%H%M%S")_$c.txt

        sleep 1

done


2.2 WCM在线产生Core的工具:

wcm/wcm_use/threaddump.jsp?count=2&interval=10

相关JSP:threaddump.jsp

3 如何分析javacore

javacore分析,很多时候是关心线程的数量及其状态,然后再对若干个别的线程栈进行分析。在javacore中,线程的状态可能是以下几种

状态意义

NEW未开始

RUNNABLE正在执行,可以简单理解为在Thread.run方法中

BLOCKED被阻塞。在等待必要的资源以进入执行状态。

WAITING等待

TIMED_WAITING休眠等待。可以简单理解为Thread.sleep

TERMINATED结束退出

一般来说,NEW/TERMINATED两个状态是较少见到的,而RUNNABLE、BLOCKED两个状态的线程是需要我们着重关注的。通常出现BLOCKED状态就是应用出现等待或挂起的地方。

借助一些工具来分析这个日志可以显著提高效率。

可以看一下内网实例分析thread dump热一下身先。然后,来认识一下jca工具。

4 JCA工具分析thread dump

JCA即Java Core Analyzer,是IBM出品的thread dump分析工具。其详细的使用介绍,见这里

本节介绍一下compare thread的使用,以分析阻塞的线程。前面完成日志的获取后,运行打开工具,选择生成的日志文件即可。

打开日志后如图所示,是一个thread dump的列表,每一次的jstack输出就是一行。

为了使用compare threads,选中列表中的多行。按住Crtl键,点选其中的行即可。选择后,右键点击compare threads


在出来的结果中,关注其中颜色为绿边,红底的内容。绿边表示进程处理RUNNABLE状态(运行),红底标注表示多个thread dump中同一个进程的栈是没有变化的(在做同一件事)。


前面已经提到,我们在获取日志是以一定间隔进行的。如果在一个足够长的时间内,同一个进程的栈没有变化,就可以相信这个进程挂住,长时间没有完成,可能存在问题。然后通过相应的栈信息检查自己写的代码。(点击其中一个就可以在右边看到详细的栈信息)


5 什么时候应该获取javacore并分析

一句话:但凡应用出现等待都应该考虑获取javacore来分析应用到底是在哪里出现了等待或长时间没完成的任务而持有了相应的资源。如以下的一些情况:

用户无法登录。输入用户名/密码点击登录后,长时间不能完成登录。

文档发布慢,发布监控中待发队列内容较多,完成的发布队列时间比较长。(这个可能还会涉及到数据库/模板等的一些调优)

无法完成文档保存。点击保存后,一直读秒无法完成文档保存。

应用CPU占用一直很高

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,809评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,189评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,290评论 0 359
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,399评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,425评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,116评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,710评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,629评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,155评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,261评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,399评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,068评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,758评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,252评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,381评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,747评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,402评论 2 358

推荐阅读更多精彩内容