日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

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

發布時間:2024/10/8 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java生产问题快速定位_生产环境如何快速跟踪、分析、定位问题-Java 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我相信做技術的都會遇到過這樣的問題,生產環境服務遇到宕機的情況下如何去分析問題?比如說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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。