寻觅负载最高的线程以及它的线程旅馆,jstack输出中线程id是16进制的

定位质量难点,越发是cpu使用率过高时,日常要求搜索cpu消耗较高的线程,然后查看其仓库,进而进入代码定位难题。
   

质量监察和控制

  1. linux命令监察和控制
    uptime 呈现系统运作时刻、连接数、负载情形
    top 系统运维时刻、平均负载意况、cpu使用率(us用户空间占比
    sy内核空间占比 ni用户进度空间退换过优先级的占比 id空闲占比
    wa等待输入输出占比)、内部存款和储蓄器使用状态、职责运维计算景况、空间退换景况
    vmstat 总括体系cpu、io、内部存款和储蓄器、线程上下文切换指标
    pidstat 查看进程详细新闻,比方说cpu、io、内存等。

寻觅负载最高的线程以及它的线程货仓?
先通过top命令查找当前负荷最高的长河
下一场通过 top -H -p pid 或 ps -p pid -L -o pcpu,tid,tname,cmd 或 pidstat
-p pid -u(监控cpu) -t(监察和控制线程) -d(监察和控制io) -r(监察和控制内部存款和储蓄器) 1(采撷频率)
3(收罗次数)
接下来经过 jstack -l pid >jstack.txt
打出线程货仓,依照第一个步骤寻觅的线程id转化为16进制,在文书中找到相应的nid与之对象,对应的库房正是负载最高线程的仓库。

  1. jdk自带的工具
    jps 显示java进程号
    jinfo 展现jvm配置参数新闻
    jmap 堆信息
    jmap -histo pid >1.txt 生成堆快照和指标总计音信
    jmap -dump:format=b,file=heap.hprof pid 生成堆dump文件
    jstack -l pid >stack.txt 生成线程旅舍音信

 

品质调优

打字与印刷gc音信相关参数
-verbose:gc
-XX:+printGC
-XX:+printGCDetails
-XX:+printGCTimeStamps
-Xloggc:log/gc.log
-XX:+printHeapAtGC
-XX:+HeapDumpOnOutOfMemoryError -XX:+HeapDumpPath
在OOM自动dump货仓使用情形,保留现场

堆大小分配
-Xms -Xmx 最大堆和纤维堆分配
-Xmn 新生代堆大小
-XX:NewRadio 新生代占比 官方推荐新生代占比3/8
-XX:SurHTCrRadio 幸存区占比 官方推荐8,幸存区占比1/10

库房、线程仓库深入分析
jmap -F dump:format=b,file=(pid)heap.log (pid)
jstack -l (pid) ~/(pid)jstack.txt
专注:jmap恐怕会促成jvm
stw,一时中止,严谨选拔,优先选项命令配置,触发oom时自动dump
线程dump入眼关切如下:
死锁,deadlock(重视关注)
进行中,Runnable(一般景况下不关注,倘使长日子有希望是死循环)
伺机财富,waiting on conditon(器重关切)
闭塞,blocked(入眼关注)

本场景下, jstack+top是一种特别卓越的点子。

 

jstack+top

 

1、top -H 查看cpu占用较高的线程,记录十进制的线程id

2、jstack  将线程新闻dump到文件中,在文书中依照线程id查找该线程的仓库。
注意,jstack输出中线程id是16进制的,这里要做二回进制转变。 

3、钻探那几个线程的库房

相关文章

网站地图xml地图