生產環境下JAVA程序高CPU佔用故障排查
轉自:http://blog.chinaunix.net/uid-10449864-id-3463151.html
問題描述:
生產環境下的某臺tomcat7伺服器,在剛釋出時的時候一切都很正常,在執行一段時間後就出現CPU佔用很高的問題,基本上是負載一天比一天高。問題分析:
1,程式屬於CPU密集型,和開發溝通過,排除此類情況。
2,程式程式碼有問題,出現死迴圈,可能性極大。
問題解決:
1,開發那邊無法排查程式碼某個模組有問題,從日誌上也無法分析得出。
2,記得原來通過strace跟蹤的方法解決了一臺PHP伺服器CPU佔用高的問題,但是通過這種方法無效,經過google搜尋,發現可以通過下面的方法進行解決,那就嘗試下吧。
解決過程:
1,根據top命令,發現PID為2633的Java程序佔用CPU高達300%,出現故障。
2,找到該程序後,如何定位具體執行緒或程式碼呢,首先顯示執行緒列表,並按照CPU佔用高的執行緒排序:
[
顯示結果如下:
USER %CPU PRI SCNT WCHAN USER SYSTEM TID TIME
root 10.5 19 - - - - 3626 00:12:48
root 10.1 19 - - - - 3593 00:12:16
找到了耗時最高的執行緒3626,佔用CPU時間有12分鐘了!
將需要的執行緒ID轉換為16進位制格式:
[[email protected] logs]# printf "%x\n" 3626
e18
最後列印執行緒的堆疊資訊:
[
將輸出的資訊發給開發部進行確認,這樣就能找出有問題的程式碼。
通過最近幾天的監控,CPU已經安靜下來了。
相關推薦
生產環境下JAVA程序高CPU佔用故障排查
轉自:http://blog.chinaunix.net/uid-10449864-id-3463151.html 問題描述: 生產環境下的某臺tomcat7伺服器,在剛釋出時的時候一切都很正常,在執行一段時間後就出現CPU佔用很高的問題,基本上是負載一天比一天高。 問題分
JAVA程序高CPU佔用故障排查
問題描述:生產環境下的某臺tomcat7伺服器,在剛釋出時的時候一切都很正常,在執行一段時間後就出現CPU佔用很高的問題,基本上是負載一天比一天高。問題分析:1,程式屬於CPU密集型,和開發溝通過,排除此類情況。2,程式程式碼有問題,出現死迴圈,可能性極大。問題解決:1,開
java生產環境下找出佔用CUP較多資源執行緒 相對定位先用top命令找出佔用資源厲害的java程序id
在這裡對linux下、sun(oracle) JDK的執行緒資源佔用問題的查詢步驟做一個小結;linux環境下,當發現java程序佔用CPU資源很高,且又要想更進一步查出哪一個java執行緒佔用了CPU資源時,按照以下步驟進行查詢: 先用top命令找出佔用資源厲害的ja
【轉】Linux下java程序CPU佔用率高分析方法
文章轉載的地址: https://blog.linuxeye.cn/343.html 在工作當中,肯定會遇到由程式碼所導致的高CPU耗用以及記憶體溢位的情況。這種情況發生時,我們怎麼去找出原因並解決。 一般解決方法是通過top命令找出消耗資源高的執行緒id,利用strace命令檢視該執行緒
weblogic下java程序占用cpu過高的問題排查
技術 .com htm http 執行命令 roo monitor The tin 1、cpu使用情況如圖: 2、執行命令 :jstack 126624 > cpu1112.log (註意執行此命令時的用戶需為執行進程的用戶,所以此處需要用weblogi
java生產環境下記憶體調優
Tomcat 效能監控與調優 Nginx 效能監控與調優 JVM 層 GC 調優 JAVA程式碼層調優 1.JVM的引數型別 標準引數(各版本中保持穩定) -help -server -client -version -showversion -cp -classpath
Linux 定位程序中CPU佔用高的執行緒
一、Top+pstack+gdb的組合拳 閒言少述,先直接上操作例項,再做原理講解。 1.1 用top命令找到最佔CPU的程序 top PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 22688 root 20 0 1842
Java應用故障之高CPU佔用的問題及排查方案
做為應用負責人,誰都希望自己負責的應用能夠在線上跑得順順當當,不出任何錯誤,也不產生任何告警,當然這是最理想的結果,也是做為技術人員希望達到的最終效果。可是實事上應用就像小孩一樣,總會在不經意間,不按你期望的結果執行,如CPU偏高、記憶體佔用偏高、應用沒有響應、應用自動掛掉等
[JVM]Java生產環境下效能監控與調優詳解_Btrace
本章關鍵詞:BTrace、攔截、注意事項 一、入門 1.做什麼的? 可以在應用程式不重啟,不修改的情況下,正在執行的情況下,動態的修改位元組碼,達到監控除錯的目的 可以動態的向目標應用程式的位元組碼注入追蹤程式碼 用到的技術 JavaComplierApi、J
[JVM]Java生產環境下效能監控與調優_參考文件連結
第二章 jdk8工具集 https://docs.oracle.com/javase/8/docs/technotes/tools/unix/index.html Troubleshooting https://docs.oracle.com/javase/8/doc
Java生產環境下效能監控與調優詳解
第8章 JVM位元組碼與Java程式碼層調優 本章帶大家學習JVM的位元組碼指令,從位元組碼層面講解一些常見問題的底層原理(面試能回答上的話, 絕對加分),比如:i++和++i哪一種效率高?迴圈體中做字串+拼接為什麼效率低?然後會重點對String做講解,包括String常量池的變化、String字面
Java線上應用故障排查之一:高CPU佔用【轉】
近期java應用,CPU使用率一直很高,經常達到100%,通過以下步驟完美解決,分享一下。 方法一: 轉載:http://www.linuxhot.com/java-cpu-used-high.html 1.jps 獲取Java程序的PID。 2.jstack pid
服務重啟導致的Java服務抖動CPU佔用高
今天后臺組發現新上線的應用CPU總是會佔用過高。(心裡暗罵,新來的運維真無聊,閒著沒事看top幹啥) 首先發送命令 jps -lv 查詢執行的程序pid=18182, [[email protected] service-8072]$ jps 19017 Jp
Java線上應用故障排查之一:高CPU佔用
一個應用佔用CPU很高,除了確實是計算密集型應用之外,通常原因都是出現了死迴圈。 以我們最近出現的一個實際故障為例,介紹怎麼定位和解決這類問題。 根據top命令,發現PID為28555的Java程序佔用CPU高達200%,出現故障。 通過ps aux | gre
Java生產環境下效能監控與調優詳解 第6章 Nginx效能監控與調優
第6章 Nginx效能監控與調優 6-1 nginx安裝 6-2 ngx_http_stub_status監控連線資訊 6-3 ngxtop監控請求資訊 6-4 nginx-rrd圖形化監控
java web伺服器cpu佔用過高的處理
平時專案中有時遇到cpu過高的情況,在此基於自己有限的經驗寫個分享,此處的伺服器都是基於linux平臺。 cpu的佔有執行緒型別總的來說分為兩種: us :使用者空間佔用CPU百分比 sy :核心空間佔用CPU百分比 一般來講CPU us高的解決方法: CPU us
Linux下java進程CPU占用率高分析方法(二)
當前 lin cpu占用率 方法 printf clas 進制 ESS strac 1. 通過 top 命令查看當前系統CPU使用情況,定位CPU使用率超過100%的進程ID;2. 通過 ps aux | grep PID 命令進一步確定具體的線程信息;3. 通過 ps -
Java中的CPU佔用高和記憶體佔用高的問題排查
下面通過模擬例項分析排查Java應用程式CPU和記憶體佔用過高的過程。如果是Java面試,這2個問題在面試過程中出現的概率很高,所以我打算在這裡好好總結一下。 1、Java CPU過高的問題排查 舉個例子,如下: package com.classloading; public class Te
Linux Shell腳本生產環境下安全地刪除文件
rm safe 腳本編寫背景 無論是生產環境、測試環境還是開發環境,經常需要使用rm命令刪除&批量一些“重要”目錄下的文件。按照Linux的哲學“小即是美”(一個程序只做一件事)+“用戶清楚自己做什麽”(用戶知道自己想要什麽,也明白自己在做什麽,並且會為自己的行為負責),那麽用戶在執行r
一次生產環境下MongoDB備份還原數據
刪除 命令格式 type 庫存 功能 字符 導出文件 信息 fields 最近開發一個版本的功能當中用到了MongoDB分頁,懶於造數據,於是就研究了下從生產環境上導出數據到本地來進行測試。 研究了一下,發現MongoDB的備份還原和MySQL語法還挺類似,下面請看詳細介紹