如何快速對應用系統做一個360度的畫像診斷?

本文僅作爲學習記錄,非商業用途,侵刪,如需轉載需作者同意。

無論多麼複雜的系統在Linux就是一個進程;
在操作系統層面都是以文件的形式來存儲的,進程也不例外。

/proc 目錄下面的文件就包含了很多的信息,很多工具的信息都是從這裏來的。

常用目錄介紹:
/proc/loadavg 前三列分別保存最近1 5 15分鐘的平均負載
/proc/meminfo 當前內存使用信息
/proc/diskstats 磁盤IO統計信息列表
/proc/net/dev 網絡流入流出統計信息
/proc/filesystems 支持的文件系統
/proc/cpuinfo cpu的詳細信息
/proc/cmdline 啓動時傳遞至內核的啓動參數
/proc/mounts 系統當前掛載的文件系統
/proc/uptime 系統運行時間
/proc/version 當前運行的內核版本號

/proc/pid/ 目錄下面有該pid進程對應的所有的信息,日誌輸出到哪裏,啓動加載哪個jar包,使用的哪個java版本等信息

回頭再手動補充下
https://www.cnblogs.com/zydev/p/8728992.html

查看該pid 與哪些端口連接在這裏插入圖片描述

在這裏插入圖片描述

性能上看關注兩件事:吞吐量和響應性

分析一、

cpu利用率不高,但是系統的吞吐量和響應性卻不理想,說明程序沒有忙於計算,可能問題出現在I/O上。
IO和CPU利用率一般成反比,CPU利用高則IO不大,IO大則CPU利用率小。
IO注意:磁盤IO,驅動程序IO,內存換頁率。
再看看網絡帶寬情況。

如果IO,cpu,網絡都沒問題,程序性能還是上不去
1、可能就是程序被阻塞了
2、或者某個資源,接口返回等在等待
3、上下文的切換

ps:就是從視頻中的內容記錄下來,有些東西還不理解…

可能影響系統的性能有:IO,內存,cpu
在這裏插入圖片描述

一級緩存最快:比如桌子上拿起一張紙,3s
二級緩存稍慢:比如書架上拿起一張紙,14s
從主存(內存)中:相當於下樓去買個零售,4分鐘
磁盤:相當於離開辦公大樓,進行15個月的環球旅行

鎖競爭會導致頻繁的上下文切換,導致嚴重的系統開銷。
表現就是內核態的CPU利用率偏高。

內存:
對於java進程來說,主要關注GC就可以了。

連接:
系統對外面依賴的中間件和接口,比如數據庫連接,如果連接數過大或者超時都是比較消耗性能的。

異常:
java的異常的捕獲和處理是非常消耗資源的,如果程序在高頻的處理異常,也會影響系統的性能。

診斷:
top : loadavg最近1分鐘 5 分鐘 15的系統的平均負載
是指在特定的時間間隔內,運行隊列中,即CPU上運行或者等待運行的平均進程數。

pidstat :
查看某個進程佔用的物理內存和虛擬內存
pidstat -r -p pid1 2

查看某個進程文件的IO情況
pidstat來查看

swap 佔用過高,說明物理內存使用過高。swap消耗主要關注它的IO。如果IO發生比較頻繁,也會影響系統的性能。
在這裏插入圖片描述

strace -T 命令 可以顯示具體的系統進程間的調用情況。

網絡IO 可以通過cat /proc/interrupts 查看
磁盤的使用一般通過dstat 查看

netstat 查看和外部交互的連接情況。

在這裏插入圖片描述
jvm在創建線程的時候,會佔用堆外的物理內存,當創建了太多了線程的時候,內存不夠的時候會報錯。

查看某個線程的進程數:
在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

定位cpu過載
1、top 命令查看到是哪個進程cpu很高
2、top -Hp pid 查看到哪個線程佔用cpu很高
3、printf “%x\n” 線程id (線程id 轉成16進制)
4、jstack -l pid | grep -C20 xxx (過濾線程id的16進制)

就可以看出來堆棧中對應的線程id的信息

OOM
1、資源不足,給的堆大小不足
2、申請的資源太多,某個資源頻繁的申請卻沒有釋放最終導致的資源耗盡
3、某個資源在頻繁的申請,比如創建新的線程,不斷的發起網絡連接

定位方法
1、查看設置內存大小
在這裏插入圖片描述

找到最消耗資源的對象:
在這裏插入圖片描述

pstree 和 netstat 查看進程創建出來的線程數量,連接數是否被耗盡等情況。

內存分析最有效的辦法,還是dump內存文件出來,但是會進行一次FGC
導出的文件可以通過MAT或者visualVM來分析。

gc會導致jvm短暫的停頓
java 啓動進程的參數中,開啓gc日誌,方便從gc日誌中分析gc的原因。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章