1. 程式人生 > >java問題導致linux負載、cpu過高如何定位

java問題導致linux負載、cpu過高如何定位

1.用top找到最耗資源的程序id

[[email protected] bin]# top
top - 16:56:14 up 119 days,  6:17,  7 users,  load average: 2.04, 2.07, 2.09
Tasks: 256 total,   1 running, 254 sleeping,   0 stopped,   1 zombie
Cpu(s):  5.0%us,  0.3%sy,  0.0%ni, 94.2%id,  0.4%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   8303056k total,  7368528k used,   934528k free,   515232k buffers
Swap: 16386260k total,    27312k used, 16358948k free,  4670096k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                      
 5244 root      15   0 1940m 1.3g  10m S 205.3 15.8 260:31.88 java                                                                                                         
 7991 root      15   0  2336 1020  704 R  2.0  0.0   0:00.01 top        

2.查詢最消耗資源的java程序

[[email protected] bin]# top -p 5244 -H
top - 16:56:00 up 119 days,  6:17,  7 users,  load average: 2.05, 2.08, 2.09
Tasks:  67 total,   2 running,  65 sleeping,   0 stopped,   0 zombie
Cpu(s): 25.8%us,  0.2%sy,  0.0%ni, 73.4%id,  0.5%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:   8303056k total,  7369024k used,   934032k free,   515220k buffers
Swap: 16386260k total,    27312k used, 16358948k free,  4670100k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                      
 5920 root      18   0 1940m 1.3g  10m R 98.6 15.8 121:55.29 java                                                                                                          
 5925 root      25   0 1940m 1.3g  10m R 98.6 15.8 121:21.41 java                                                                                                          
 7985 root      15   0 1940m 1.3g  10m S  3.3 15.8   0:00.10 java                                                                                                          
 5246 root      15   0 1940m 1.3g  10m S  1.0 15.8   1:02.50 java                                                                                                          
 5247 root      15   0 1940m 1.3g  10m S  1.0 15.8   1:02.35 java                                                                                                          
 5248 root      15   0 1940m 1.3g  10m S  1.0 15.8   1:02.38 java

3.列印java 棧 資訊

在jdk的bin下執行

[[email protected] bin]# jstack 5244 >stack.txt

4.將耗資源的javaPID轉換為16進位制(5920轉1720<16進位制>  去百度找 :十進位制轉十六進位制)

PID 對應 堆疊中的nid(16進位制)

去stack.txt 中查詢nid=1720的問題

"LongTimeTask Thread" daemon prio=10 tid=0x40916400 nid=0x1720 runnable [0x412fe000]
   java.lang.Thread.State: RUNNABLE
 at com.zving.tk.service.CreatePaperService.createPaper(CreatePaperService.java:143)
 at com.zving.tk.service.CreatePaperService.execute(CreatePaperService.java:55)
 at com.zving.framework.messages.LongTimeTask.run(LongTimeTask.java:154)

5.根據具體問題查詢原始碼  

6.同時要看一下堆的情況

在jdk的bin目錄執行

jmap  - heap  5244

jmap  -histo   5244 

相關推薦

java問題導致linux負載cpu如何定位

1.用top找到最耗資源的程序id [[email protected] bin]# top top - 16:56:14 up 119 days,  6:17,  7 users,  load average: 2.04, 2.07, 2.09 Tasks: 2

MYSQL "ORDER BY rand()"的坑--容易導致機器負載CPU佔用

在一次微信砍價活動營銷中,使用了4核16G10M頻寬的伺服器支撐業務,本來這個配置跑個PHP+MYSQL+nginx肯定輕輕鬆的事情,可是隨著活動的高潮,併發數一高,機器負載核CPU一下子就達到100% 始終找不到原因,只知道是mysql分配的記憶體不夠,一直給它加,但是重啟m

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

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

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查詢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

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

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

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

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

weblogic下java程序占用cpu的問題排查

技術 .com htm http 執行命令 roo monitor The tin 1、cpu使用情況如圖: 2、執行命令 :jstack 126624 > cpu1112.log (註意執行此命令時的用戶需為執行進程的用戶,所以此處需要用weblogi

java應用佔用cpu原因分析

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

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

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

Linux中如何精準定位JVM執行緒CPU

    此文提供一種方法來快速定位Linux中JVM的執行緒CPU過高的問題。執行在Linux上的JVM的一個核心概念是:Java執行緒通過native threads實現,這導致Java中的每個執行緒對應著一個獨立的Linux程序。     仍然需要生成jvm程序的thr

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

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

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

lang 主服務器 disable mission 帳號 知識 用戶 clean oca 2017-02-28 15:13 331人閱讀 評論(0) 收藏 舉報 MySQL占用CPU過高如何優化 一次生產DB服務器的 超負荷運行問題解決: 1.查看生產

Spring cloud開發的微服務部署到Linux上內存的問題

linux系統服務 內存參數 中間 size 但是 aps 內存占用 style 驗證 【問題描述】   在使用spring cloud過程中一個很嚴重的資源問題就是內存占用過高,而實際上開發測試並沒有很大的量,甚至卻出現了服務無法正常訪問的問題。 【原因分析】 主

elasticsearch CPU原因查找

elasticsearch CPU 今天稍微壓了了一下線上的ES集群,發現CPU 過高,線上用的是4核16G。 找到ES的進程14642, 執行 top -Hp 14642 選取其中一個過高的線程 jstack 14642 | grep -A 30 3989 發現 你也可以用 jstack 14

nginx系統占用CPU

阿裏 cpu高 pid 就是 tin nginx ret bject gin 一般來說,只要您的linux系統出現占用CPU資源高,或者占用內存多的放,都離不開php-cgi或php-fpm進程,當然,還有一個進程就是mysqld進程,遇到這樣的問題,如果對linux系統不

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

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

win10 解決 WMI Provider Host 占用CPU問題

log sdn tgw com win8.1 選擇 木馬 翻譯 event 真心懶得寫Blog,但是之前遇到這個問題在網上查了一大圈,幾乎一摸一樣都是讓關防火墻等服務的,然而對於我來說,並沒有毛線用。 無奈,直接去微軟社區查,還真有一篇問題解決方案。順手翻譯一下

win10 解決 WMI Provider Host 佔用CPU問題

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

tomcat占用cpu解決辦法

title 情況 處理 顯示 pri grep tar jstack 16進制 在工作中經常遇到tomcat占用cpu居高不下,針對這種情況有以下處理辦法進行排查。 jps --> 查看java的進程 top -Hp pid --> 根據jps得到的進程