1. 程式人生 > >linux排查java程序佔用CPU過高原因方法

linux排查java程序佔用CPU過高原因方法

前言

在運維tomcat伺服器時,我們通常會發現cpu的負載過高,大多數原因是由於java程式碼的bug引起的。可能你的java程式碼有很多,檔案也有很多,一行一行的排查是很費時間的。這時我們就可以使用jstack、top等工具對引起問題的程式碼進行定位,通過更改程式碼來從根本上解決問題。(如果服務是很久以前的,那麼牽一髮而動全身,就很難通過更改程式碼來到達目的,這時就只能重啟相關的服務來降低負載了。)

排查java程序佔用CPU過高思路

1.提取佔用CPU過高的程序

方法一:使用top查詢到佔用CPU高的程序的pid
top -d 1

方法二:使用ps查詢到tomcat執行的程序pid
ps -ef | grep tomcat

2.定位問題執行緒的pid
(此處pid為上一步找到的程序id)

方法一:使用top查詢該程序下所有執行緒的執行情況
top -Hp pid

方法二:使用ps檢視該程序的執行緒情況
ps -mp pid -o THREAD,tid,time

3.將執行緒的pid轉換為16進位制
(此處的pid為上一步找到的佔CPU高的執行緒id)

printf ‘%x\n’ pid

4.用jstack列印執行緒資訊 ,可將資訊重定向到檔案中
(pid為第一步找到的程序id,tid為第三步轉換的執行緒id)

jstack pid |grep tid

例如:jstack 30116 | grep -A 20 75cf 或 jstack 30116 |grep 75cf >> jstack.out

5.進行分析

相關推薦

linux排查java程序佔用CPU原因方法

前言 在運維tomcat伺服器時,我們通常會發現cpu的負載過高,大多數原因是由於java程式碼的bug引起的。可能你的java程式碼有很多,檔案也有很多,一行一行的排查是很費時間的。這時我們就可以使用jstack、top等工具對引起問題的程式碼進行定位,

linux下查詢java程序佔用CPU原因

1. 查詢程序 top檢視程序佔用資源情況 明顯看出java的兩個程序22714,12406佔用過高cpu. 2.查詢執行緒 使用top -H -p <pid>檢視執行緒佔用情況

java應用佔用cpu原因分析

線上伺服器cpu佔用過高問題排查 1、定位最耗cpu的程序 命令:top 2、定位最耗cpu的執行緒 命令:Top –Hp PID 例如:Top –Hp 12086 3、列印執行緒堆疊資訊 命令:Printf ‘%x\n’ PID 例如:printf

IAStorDataMgrSvc.exe程序佔用cpu解決方法

dell電腦無任何讀寫操作,但IAStorDataMgrSvc.exe程序始終佔用40%~50% 的cpu,高cpu佔用,電腦操作不順暢。 這個程序一般都是驅動程式版本有問題!別以為電腦都已經是裝的最新版本的驅動了就覺得不會是這個問題,本人就是安裝官方推薦的

線上Java程式佔用 CPU ,請說一下排查方法

> 我是風箏,公眾號「古時的風箏」,一個兼具深度與廣度的程式設計師鼓勵師,一個本打算寫詩卻寫起了程式碼的田園碼農! 文章會收錄在 [JavaNewBee](https://github.com/huzhicheng/JavaNewBee) 中,更有 Java 後端知識圖譜,從小白到大牛要走的路都在裡面。 這

Linux伺服器java程序佔用系統記憶體

使用top命令檢視系統資源的使用情況,命令:top 如圖可以看到java的程序記憶體使用率較高,java程序的記憶體使用率達到了70%+ 2.定位執行緒問題(通過命令檢視9718程序的執行緒情況),命令:ps p 9718 -L -o pcpu,pmem,pid,tid,time

使用tomcat java程序佔用cpu原因

使用tomcat做為java容器,cpu佔用偏高的原因,目前公司伺服器上面跑的ubuntu環境nginx+tomcat+mysql執行一段時間之後java程序cpu偏高,會出現網站打不開的情況。所以進行了如下分析。 一,首先檢視tomcat日誌,如果有出現OOM錯誤(

w3wp.exe程序佔用記憶體解決方法

解決CPU佔用過多: 1、在IIS中對每個網站進行單獨的應用程式池配置。即互相之間不影響。 2、設定應用程式池的CPU監視,不超過25%(伺服器為4CPU),每分鐘重新整理,超過限制時關閉。 根據w3wp取得是哪一個應用程式池: 1、在工作管理員中增加顯示pid欄位。就可以看到佔用記憶體或者cpu最高

JAVA Linux 排查CPU 方法

原文:https://blog.csdn.net/zhanglh046/article/details/50443528  方法一 1 ps -ef | grep java 查詢java 程序號 2 top -p PID -H 觀察佔用CPU較多的執行緒 3 找出CPU消耗較多的執行緒

Linux排查Java程序占用CPU的解決辦法

time printf bubuko linux排查 win 查看 14. 解決辦法 利用 Java的工具集相當強大,學習成本也很低,處理線上問題時,jstack這個工具就比微軟的windbg,好學好用很多,3步找出占用CPU很高的源所在。而windbg反人類的各種命令,實

linux下查找java進程占用CPU原因

jmeter 性能測試 linux下查找java進程占用CPU過高原因1. 查找進程top查看進程占用資源情況明顯看出java的兩個進程22714,12406占用過高cpu. 2.查找線程使用top -H -p <pid>查看線程占用情況 3.查找java的堆棧信息將線程id轉換成十六進制

記一次jdbc連線oracle資料庫佔用CPU的問題排查

    背景:     公司有一個通訊系統,主要是通訊資料到客戶端程式所指定的資料庫,目前支援sqlserver、mysql和oracle三種類型的資料庫,此篇主要記錄一次oracle資料庫佔用CPU飆高的問題。   &nbs

記一次 MongoDB 佔用 CPU 問題的排查

1. 引言 今天檢視監控無意間突然發現自己的伺服器上,CPU 佔用率飆升到 100%,load 升到 10 以上,登入的響應已經達到半分鐘。 馬上執行 top,發現主要是 mongodb 佔用了大量

linux查詢cpu原因--java

1. 查詢java pid  top -c 2. 查詢java程序下,執行緒情況  top -Hp pid(threadIdList) 3. 將10進位制執行緒id轉為16進位制  printf "%x \n" threadId(tid) 4. 查詢執行緒情況  jstack pid|grep '0xt

JVM定位佔用cpu堆疊資訊(Linux

第一步:使用top命令檢視程序佔用CPU的情況,獲取PID top                                                                                                       

如何排查java應用中CPU使用率或記憶體佔用的問題

如何排查java應用中CPU使用率高或記憶體佔用高的問題?這類問題的排查步驟基本通用的。現在通過一個具體的例子來說明。 問題描

win10 解決 WMI Provider Host 佔用CPU問題

      真心懶得寫Blog,但是之前遇到這個問題在網上查了一大圈,幾乎一摸一樣都是讓關防火牆等服務的,然而對於我來說,並沒有毛線用。 無奈,直接去微軟社群查,還真有一篇問題解決方案。順手翻譯一下放在這裡,希望能幫到大家。 參考連結:https://answers.m

Mysql佔用CPU如何優化,如何解決

 Mysql佔用CPU過高如何優化 一次生產DB伺服器的 超負荷執行問題解決: 1.檢視生產DB伺服器top列表, 執行 top 命令 檢視Cpu(s) 引數一直處於 98% 狀態 ,load average達到了 5  (4核伺服器) 可見DB已經超負荷運行了

完美解決win7系統中IE佔用CPU問題(轉)

選中”Main“右側會顯示子內容。從中找到”TabProcGrowth“,並雙擊開啟,將數值資料設定為”0“或者”1“。TabProcGrowth賦值為1,則表示允許系統最多可允許IE出現兩個程序,如果賦值為0,則表示IE只能有一個程序。一般我們設定為”0“。

解決win7 svchost佔用CPU的問題

最近發現 工作管理員裡,  一個svchost.exe 總是佔著大量CPU,  以為中毒了。  經過排查,感覺是Windows Update 時刻佔用著這個程序, 造成不停地運算處理。 解決方法:   在工作管理員裡,右鍵佔用cpu最多的那個 svchost.exe -&