Linux線上故障排查

cup佔用率高java

第一步:找到佔用CPU太高的進程的pidlinux

使用top命令,而後按shift+p按照CPU排序工具

第二步:找到進程中消耗資源最高的線程的idspa

使用top -Hp [進程id]線程

第三步:將線程id轉換爲16進制(字母要小寫)orm

使用echo 'obase=16;[線程id]' | bc或者printf "%x\n" [線程id]
【bc是linux的計算器命令】blog

第四步:查看線程狀態信息排序

執行jstack [進程id] |grep -A 10 [線程id的16進制]」進程

第五步:導出堆棧異常信息內存

執行jstack [進程id] |grep -A 10 [線程id的16進制] > xxx.txt
下載至本地sz xxx.txt

內存佔用較高:找到內存佔用高的線程後,使用 jmap -dump:format=b,file=dumpfile.dat [pid]將內存信息down下來,pid爲線程id,使用java自帶工具

java visual vm:打開jdk/bin/jvisualvm,裝入dump文件便可;

查看某進程號下的gc狀況:jstat -gc 12538 5000

即會每5秒一次顯示進程號爲12538的java進成的GC狀況,

字段說明: 顯示內容說明以下(部分結果是經過其餘其餘參數顯示的,暫不說明):          S0C:年輕代中第一個survivor(倖存區)的容量 (字節)           S1C:年輕代中第二個survivor(倖存區)的容量 (字節)           S0U:年輕代中第一個survivor(倖存區)目前已使用空間 (字節)           S1U:年輕代中第二個survivor(倖存區)目前已使用空間 (字節)           EC:年輕代中Eden(伊甸園)的容量 (字節)           EU:年輕代中Eden(伊甸園)目前已使用空間 (字節)           OC:Old代的容量 (字節)           OU:Old代目前已使用空間 (字節)           PC:Perm(持久代)的容量 (字節)           PU:Perm(持久代)目前已使用空間 (字節)           YGC:從應用程序啓動到採樣時年輕代中gc次數           YGCT:從應用程序啓動到採樣時年輕代中gc所用時間(s)           FGC:從應用程序啓動到採樣時old代(全gc)gc次數           FGCT:從應用程序啓動到採樣時old代(全gc)gc所用時間(s)           GCT:從應用程序啓動到採樣時gc用的總時間(s)           NGCMN:年輕代(young)中初始化(最小)的大小 (字節)           NGCMX:年輕代(young)的最大容量 (字節)           NGC:年輕代(young)中當前的容量 (字節)           OGCMN:old代中初始化(最小)的大小 (字節)           OGCMX:old代的最大容量 (字節)           OGC:old代當前新生成的容量 (字節)           PGCMN:perm代中初始化(最小)的大小 (字節)           PGCMX:perm代的最大容量 (字節)             PGC:perm代當前新生成的容量 (字節)           S0:年輕代中第一個survivor(倖存區)已使用的佔當前容量百分比           S1:年輕代中第二個survivor(倖存區)已使用的佔當前容量百分比           E:年輕代中Eden(伊甸園)已使用的佔當前容量百分比           O:old代已使用的佔當前容量百分比           P:perm代已使用的佔當前容量百分比           S0CMX:年輕代中第一個survivor(倖存區)的最大容量 (字節)           S1CMX :年輕代中第二個survivor(倖存區)的最大容量 (字節)           ECMX:年輕代中Eden(伊甸園)的最大容量 (字節)           DSS:當前須要survivor(倖存區)的容量 (字節)(Eden區已滿)           TT: 持有次數限制           MTT : 最大持有次數限制 

相關文章
相關標籤/搜索