排查定位由死迴圈引起的cpu負載飆高或者死鎖
在linux下:
linux的top命令可以檢視程序的pid,我們找到java程式的pid,
然後執行 top -Hp pid 就可以檢視到這個程序下執行緒的執行情況。
這樣粗略可以看到哪些執行緒比較繁忙,這時候就用到jdk自帶的小工具jstack(官方文件或者自行 百度)。
我們執行jstack pid > abc.txt //意思是執行結果輸出到這個文字。
在這個文字中有很多的就是當前執行緒的執行情況。
文字中的執行緒pid是十六進位制的,top出來的是十進位制,所以十進位制轉十六進位制命令:printf "%x" 十進位制的執行緒id
jstack還有很多其他的引數,感興趣的可以自己看一下官方文件。
剛才輸出的abc.txt裡面就是我們執行緒執行的情況,那麼可以這麼排查定位:
當你top -Hp pid 可以檢視到cpu佔用高的執行緒,然後把這個執行緒pid轉換為十六進位制,開啟abc.txt檔案,搜尋這個十六進位制數,搜出來的結果就是要重點排查的!
相關推薦
排查定位由死迴圈引起的cpu負載飆高或者死鎖
在linux下: linux的top命令可以檢視程序的pid,我們找到java程式的pid, 然後執行 top -Hp pid 就可以檢視到這個程序下執行緒的執行情況。 這樣粗略可以看到哪些執行緒比較繁忙,這時候就用到jdk自帶的小工具jstack(官方文件或者自行 百度)。 我們
linux 排查cpu負載過高異常
問:如何定位是哪個服務程序導致CPU過載,哪個執行緒導致CPU過載,哪段程式碼導致CPU過載? 步驟一、找到最耗CPU的程序 工具:top 方法: 執行top -c ,顯示程序執行資訊列表 鍵入P (大寫p),程序按照CPU使用率排序 圖示: 如上圖,最耗CPU的程序P
CPU負載過高異常排查實踐與總結
昨天下午突然收到運維郵件報警,顯示資料平臺伺服器cpu利用率達到了98.94%,而且最近一段時間一直持續在70%以上,看起來像是硬體資源到瓶頸需要擴容了,但仔細思考就會發現咱們的業務系統並不是一個高併發或者CPU密集型的應用,這個利用率有點太誇張,硬體瓶頸應該不會這麼快就到了,一定是哪裡的業務程式碼邏輯有問題
伺服器CPU負載過高,如何定位問題
CPU負載過高解決問題過程: 1,根據top命令,發現PID為12433的Java程序佔用CPU高達300%,出現故障。 2,找到該程序後,如何定位具體執行緒或程式碼呢,首先顯示執行緒列表,並按照CPU佔用高的執行緒排序: [[email protected] logs]# ps -mp 1243
伺服器cpu負載過高問題排查
第一步 :執行top命令,查出當前機器執行緒情況 top - 09:14:36 up 146 days, 20:24, 1 user, load average: 0.31, 0.37, 0.45 Tasks: 338 total, 1 running
主機cpu突然飆高,如何快速排查問題
[問題發現] 使用zabbix軟體監控伺服器時發現cpu突然異常,在業務主機上使用top命令檢視系統的整體執行情況,使用top命令後發現mysqld佔用CPU特別高,初步判斷可能是mysqld出現問題,需要排查: [排查步驟] Step1
mysql負載飆高原因分析
line iop 表數據 過去 服務器 del dell服務器 數據統計 swap 某些進程/服務消耗更多CPU資源(服務響應更多請求或存在某些應用瓶頸);發生比較嚴重的swap(可用物理內存不足);發生比較嚴重的中斷(因為SSD或網絡的原因發生中斷);磁盤I/O比較慢(會
記一次生產環境CPU佔用飆高問題解決
1 問題來源與背景 問題背景,專案對外提供查詢航班艙位介面,對航信黑屏報文做正則解析返回。由於起初對正則不熟悉,對黑屏報文格式規律不清楚,導致寫了大量的長正則表示式,生產環境併發量上來(200/s),直
如何定位死迴圈或高CPU利用率linux
轉自:https://www.jianshu.com/p/ee41ac23abe6 最近在完成一個比較大的多執行緒C++離線服務程式後,發現經常會出現卡住的情況,表現為CPU利用率100%左右,一直沒找到程式碼原因,就採用了一個笨到方法,每小時重啟一次服務…… 這樣做仍然會有好多資料進不了庫
Linux系統排查——CPU負載篇
stdout 0.00 swap stat cpu 隨筆 2.7 bin tasks 本隨筆介紹CPU負載的排查手段。 查看系統負載的工具:uptime,w,都能查看系統負載,系統平均負載是處於運行或不可打擾狀態的進程的平均數, 可運行:運行態,占用CPU,或就
誤用WeakHashMap引起的死循環cpu跑滿問題
interrupt 除了 oid put cti png catch buffer 線程棧 最近使用mvel 2.2.0.Final,出現一次cpu跑滿,經過線程棧分析,發現是誤用WeakHashMap引起的。 故障現場: 看WeakHashMap源碼:
多執行緒環境死迴圈定位
你的軟體在某個時刻停止服務,CPU佔用達到100%+,這種問題一個可能的原因是產生了死迴圈,假設程式某處存在潛在的死迴圈,並在某種條件下會引發,本文以一個示例來定位出現死迴圈的位置。 當程式某處存在死迴圈,通常定位問題及縮小範圍的方法是,在可疑的程式碼處加log,或者註釋掉可疑程式碼,這對
jstack簡單使用,定位死迴圈、執行緒阻塞、死鎖等問題
當我們執行java程式時,發現程式不動,但又不知道是哪裡出問題時,可以使用JDK自帶的jstack工具去定位; 廢話不說,直接上例子吧,在window平臺上的; 一、死迴圈 package software.architect.OtherAnalyzer.main; public
定義一個數組,陣列初始長度由控制檯獲取 。隨後手動給陣列中每個元素賦值,陣列滿後將陣列長度擴充二倍並輸出,清空陣列中所有元素且值繼承陣列長度,並重新進行手動新增元素,無限死迴圈直至輸出-0後結束程式。
package com.tedu; import java.util.Arrays; import java.util.Scanner; /** * 需求: * 定義一個初始陣列,陣列初始長度由控制檯獲取 * 隨後手動給陣列中每個元素賦值,陣列滿後將陣列長度擴充二倍輸
由excel匯出引起的cpu 100% 和gc 的問題
大家好,我是烤鴨: 記一次 由excel匯出 導致的cpu飆升200%,jvm 記憶體不足。 1. 場景復現 前端頁面匯出Excel,之前匯出4,5W條資料都沒什麼問題的。 &
併發的HashMap為什麼會引起死迴圈?
今天研讀Java併發容器和框架時,看到為什麼要使用ConcurrentHashMap時,其中有一個原因是:執行緒不安全的HashMap, HashMap在併發執行put操作時會引起死迴圈,是因為多執行緒會導致HashMap的Entry連結串列形成環形資料結構,查詢時會陷入死
JVM調優(9)jstack定位死迴圈、執行緒阻塞、死鎖等問題
當我們執行java程式時,可能會出現死迴圈,IO阻塞,執行緒死鎖等問題,導致程式無法進行下去,但從程式碼上有無法確定問題出現的具體原因或者地方。可以使用JDK自帶的jstack工具去簡單定位; 死迴圈 程式如下: /** * @Author Ralph * 死迴圈定位
Java專案排查cpu負載高
背景 我負責的其中一個專案在空負載的情況下,CPU佔用率依然保持著100%左右,線上、測試、開發的服務都一樣;是什麼導致的呢?在開發環境我查看了請求流量,這個流量可以忽略但CPU佔用率一直在60%-100%之間浮動。 分析問題 流量可以忽略,但CPU佔用依然極其高說明不是請求多導致的資源佔用,原
[手遊專案2]-21-死迴圈排查
.打開了所有的log,看最後一條log,定位最後一個函式 很多人喜歡這樣寫 while(true) if(break) 這個死迴圈 for(true) if(++) 也是一個道理 儘量避免寫這樣的程式碼
Linux定位伺服器CPU負載100%居高不下的問題
最近,Linux伺服器上總是經常會出現幾個CPU利用率達到100%並且一直高居不下,如下圖所示,再Linux上,輸入 top 命令,然後再按一下 1,就會顯示你伺服器邏輯CPU的數量以及現在伺服器CP