java進程異常dump參考腳本

1. 腳本目的

java進程存活,但存在嚴重異常、假死、沒有響應等時候,執行dump.sh腳本,快照當前系統及jvm的信息,保留問題現場。

2. 腳本地址

osc-java-dump.sh

3. 執行demo

# 上傳dump.sh文件
mkdir -p /data/sh/java
cd /data/sh/java
rz 

# 初始化腳本
dos2unix dump.sh
chmod +x dump.sh

# 正常執行
/data/sh/java/dump.sh /tmp/dump /usr/local/java/jdk1.8.0_05 23554
# 如果進程hung,則添加-F參數
/data/sh/java/dump.sh /tmp/dump /usr/local/java/jdk1.8.0_05 23554 -F
  • 參數說明
  1. /data/sh/java/dump.sh dump腳本的絕對路徑,必填項
  2. /tmp/dump dump文件保存的根路徑,注意,會在該路徑下在生成時間戳文件夾
  3. /usr/local/java/jdk1.8.0_05 java_home路徑
  4. 23554 java(tomcat)-pid,必填項
  5. -F 進程hung是,強制執行,非必填項

4. 執行結果及說明

[root@test 2018-09-28_20_32_38_516053700]# ll
total 259472
-rw-r--r-- 1 root root      7980 Sep 28 20:32 jvm_jinfo_20-32-52-754854642.dump                     #gc配置
-rw------- 1 root root 264130476 Sep 28 20:33 jvm_jmap_20-33-06-990069413.hprof                     #gc堆棧
-rw-r--r-- 1 root root     88240 Sep 28 20:32 jvm_jstack_20-32-55-852166558.dump                    #gc線程
-rw-r--r-- 1 root root       738 Sep 28 20:33 jvm_jstat-gcutil_20-32-59-442298526.dump              #gc回收概要
-rw-r--r-- 1 root root       353 Sep 28 20:32 machine_free_20-32-39-141097263.dump                  #內存概要
-rw-r--r-- 1 root root      1058 Sep 28 20:32 machine_iostat_20-32-44-198227715.dump                #io詳細
-rw-r--r-- 1 root root     46445 Sep 28 20:32 machine_iotop_20-32-46-212382766.dump                 #iotop
-rw-r--r-- 1 root root     20711 Sep 28 20:32 machine_lsof_20-32-52-417439254.dump                  #文件句柄信息
-rw-r--r-- 1 root root     97967 Sep 28 20:32 machine_mpstat_20-32-41-163178078.dump                #cpu信息
-rw-r--r-- 1 root root    518002 Sep 28 20:32 machine_netstat_20-32-51-662440984.dump               #網絡信息
-rw-r--r-- 1 root root        80 Sep 28 20:33 machine_netstat_status_statistics.dump                #網絡信息統計
-rw-r--r-- 1 root root    722294 Sep 28 20:32 machine_sar_20-32-52-619321528.dump                   #各類歷史記錄
-rw-r--r-- 1 root root      8952 Sep 28 20:32 machine_top50_20-32-38-536098971.dump                 #top 50行
-rw-r--r-- 1 root root      8952 Sep 28 20:32 machine_top-50-high-thread_20-32-55-319789848.dump    #進程中佔用cpu高的線程
-rw-r--r-- 1 root root       510 Sep 28 20:32 machine_vmstat_20-32-39-151829235.dump                #io 內存
-rw-r--r-- 1 root root      4250 Sep 28 20:33 run.log

5. 腳本說明

  • 腳本快照信息,主要包含兩部分:機器信息和jvm信息
    • 機器信息,包含:)實時信息和歷史信息[sar],部分實時信息會截取執行腳本時候的3次快照信息,間隔爲1s;最後會統計下tcp的各種狀態數量。
    • jvm信息,含jinfo[jvm配置信息]、jstack[線程及死鎖]、jstat[實時jvm垃圾回收信息]及jmap[堆及堆中對象信息]。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章