[已解決]服務器CPU突然飆高98%----Java程序OOM問題 (2024.9.5)

目錄

  • 問題描述
  • 問題排查
  • 問題解決
  • 參考資料


問題描述

業主單位服務器自8月29日晚上21:00起CPU突然飆高至98%,內存爆滿,一直到9月5日:

在這里插入圖片描述


問題排查

①執行 top 命令查看Java進程PID

top

在這里插入圖片描述

②執行top -Hp PID 命令查看具體的線程情況

top -Hp 3058

輸入上述命令會顯示進程 ID 為 3058 的進程及其所有子進程的資源使用情況,按占用cpu使用率倒序顯示

在這里插入圖片描述
上述占用CPU最高的前十線程如下:

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                                                                                           47496 root      20   0   18.6g  10.7g  15376 R  61.9  68.6 406:54.77 Thread-240                                                                                                                                        10017 root      20   0   18.6g  10.7g  15376 R  49.3  68.6 293:56.47 Thread-246                                                                                                                                        10391 root      20   0   18.6g  10.7g  15376 R  48.0  68.6 293:37.96 Thread-249                                                                                                                                        10141 root      20   0   18.6g  10.7g  15376 R  46.0  68.6 293:45.48 Thread-247                                                                                                                                        10259 root      20   0   18.6g  10.7g  15376 R  44.7  68.6 293:57.29 Thread-248                                                                                                                                        9965 root      20   0   18.6g  10.7g  15376 R  42.1  68.6 294:10.26 Thread-245                                                                                                                                        3060 root      20   0   18.6g  10.7g  15376 S  16.2  68.6 103:36.83 GC task thread#                                                                                                                                   3061 root      20   0   18.6g  10.7g  15376 S  15.9  68.6 103:36.20 GC task thread#                                                                                                                                   3063 root      20   0   18.6g  10.7g  15376 S  15.9  68.6 103:33.17 GC task thread#                                                                                                                                   3062 root      20   0   18.6g  10.7g  15376 S  15.6  68.6 103:38.85 GC task thread#                                                                                                                                   3064 root      20   0   18.6g  10.7g  15376 S   4.3  68.6  32:01.71 VM Thread  

③將線程的pid轉為16進制

printf '0x%x\n' PID

在這里插入圖片描述
在這里插入圖片描述

④使用jvm工具jstack打印該進程的堆棧信息

jstack 47496 | grep -A 50 0xb988

But 報錯了

在這里插入圖片描述

47496: Unable to open socket file /proc/47496/root/tmp/.java_pid47496: target process 47496 doesn't respond within 10500ms or HotSpot VM not loaded

查閱相關資料

在這里插入圖片描述

注意:發現本地執行命令的用戶和Java應用所屬的用戶均一致,jstack后面的pid與16進制的數也是一致的,因為是直接復制過去的,若無法解決,可直接執行第⑤步

⑤執行jstack命令抓取Java線程的堆棧信息

 jstack 3058 > /opt/xxxxx/thread_dump.txt 

上述命令會將進程 ID 為 3058 的 Java 應用程序生成一個線程堆棧轉儲(thread dump),并將輸出重定向到 /opt/xxxxx/thread_dump.txt 文件中

在這里插入圖片描述

⑥抓取thread_dump.txt文件至本地分析,以子線程Thread-240分析【0xb988】

在這里插入圖片描述

⑦使用反編譯工具JD-GUI查看對應class文件

在這里插入圖片描述
官方下載鏈接:http://java-decompiler.github.io/

在這里插入圖片描述

成功定位到問題,進行相關代碼修改后打包部署!!!


問題解決

近3日服務器運行狀況如下:

在這里插入圖片描述
可以看到CPU使用率基本穩定在10%,解決Java程序OOM 成功!!!


參考資料

  • java應用cpu飆升(超過100%)故障排查步驟
  • 重點問題!CPU利用率過高排查思路|原創

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/73416.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/73416.shtml
英文地址,請注明出處:http://en.pswp.cn/web/73416.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Mybatis基于注解開發

Mybatis基于注解進行開發 基于注解形式開發Mybatis省去XML的SQL映射配置文件&#xff08;只需要在Mybatis的核心配置文件中設置要掃描的接口通過Mapper標簽中的子標簽<package>指定要掃描的包&#xff09; 注意&#xff1a;在進行想改的SQL操作的時候首先要注意數據表的…

【C++】STL性能優化實戰

STL性能優化實戰 STL (Standard Template Library) 是 C 標準庫的核心部分&#xff0c;提供了各種容器、算法和迭代器。雖然 STL 提供了強大的功能&#xff0c;但不恰當的使用可能導致性能問題。下面我將詳細介紹 STL 性能優化的實戰技巧&#xff0c;并通過具體案例說明。 1.…

OSI模型_TCP/IP模型_五層模型

文章目錄 OSI模型_TCP/IP模型_五層模型模型對比模型層級對比關鍵區別對比 OSI模型OSI模型概述舉例說明流程圖示 TCP/IP 四層模型模型結構舉例說明流程圖示 TCP/IP 五層模型模型的結構舉例說明流程圖示 OSI模型_TCP/IP模型_五層模型 學OSI&#xff0c;用TCP/IP&#xff0c;分析選…

R語言——字符串

參考資料&#xff1a;學習R 文本數據存儲在字符向量中。重要的是&#xff0c;字符向量中的每個元素都是字符串&#xff0c;而非單獨的字符。 文本的基本單位是字符向量&#xff0c;著意味著大部分字符串處理函數也能用于字符向量。 1、創建和打印字符串 字符向量可用c函數創建…

如何區別在Spring Boot 2 和 Spring Boot 3 中使用 Knife4j:集成與配置指南

在現代的 Web 開發中&#xff0c;API 文檔是不可或缺的一部分。Knife4j 是基于 Swagger 的增強工具&#xff0c;它不僅提供了更友好的 API 文檔界面&#xff0c;還支持更多實用的功能&#xff0c;如離線文檔導出、全局參數配置等。本文將詳細介紹如何在 Spring Boot 2 和 Sprin…

pagehelper 分頁插件使用說明

pom.xml&#xff1a;pageHelper坐標 <!--pageHelper坐標--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.6</version></dependency> 分…

C++可變參數

可變參數C風格的可變參數C風格可變參數的使用 C11可變參數模板遞歸展開參數包參數列表展開折疊表達式 STL中的emplace插入接口 可變參數 C風格的可變參數 可變參數是一種語言特性&#xff0c;可以在函數聲明中使用省略號...來表示函數接受可變數量的參數。 例如典型的printf…

數據庫的操作,以及sql之DML

首先&#xff0c;創建表以及插入數據 create table t_text(id int primary key auto_increment,name varchar(20) unique not null,gender char(5) not null check(gender in ("男","女")),deed varchar(255) not null default "事例不詳"); in…

vue2前端日志數據存儲(indexedD)自動清理3天前的數據

前言&#xff1a;關于Dexie.js這個前端本地數據庫&#xff0c;如何使用IndexedDB來存儲數據&#xff0c;并且設置到期自動清理的機制。首先&#xff0c;我需要回憶一下Dexie.js的基本用法&#xff0c;以及IndexedDB的特性。IndexedDB是瀏覽器中的一種非關系型數據庫&#xff0c…

【MySQL篇】索引特性,索引的工作原理以及索引的創建與管理

目錄 一&#xff0c;初識索引 二&#xff0c;MySQL與磁盤交互的基本單位 三&#xff0c;MySQL中數據文件的特性 四&#xff0c;理解page和索引 五&#xff0c;聚簇索引和非聚簇索引 六&#xff0c;索引操作 查詢索引 創建主鍵索引 唯一索引的創建 普通索引的創建 全文…

springboot項目啟動常見的問題以及配置以及一些使用技巧

1.配置倉庫 這里要把xml文件從國外的鏡像源改成國內的鏡像源。改鏡像源可以查看這篇文章 點擊查看 2.更改文件類型 方法一&#xff1a;右鍵文件找到Mark Dircetory as可以更改文件類型 方法二&#xff1a; 3.springboot本地Maven倉庫的位置 4.pom.xml文件報紅錯誤怎么辦 這…

【初探數據結構】二叉樹的順序結構——堆的實現詳解(上下調整算法的時間復雜度分析)

&#x1f4ac; 歡迎討論&#xff1a;在閱讀過程中有任何疑問&#xff0c;歡迎在評論區留言&#xff0c;我們一起交流學習&#xff01; &#x1f44d; 點贊、收藏與分享&#xff1a;如果你覺得這篇文章對你有幫助&#xff0c;記得點贊、收藏&#xff0c;并分享給更多對數據結構感…

流量分析2

一&#xff0c;webshell流量 [GKCTF 2021]簽到 先看協議分級&#xff0c;大部分是tcp&#xff0c;里面有http的基于的行文本數據占了很大的比重&#xff0c;看看里面有什么 過濾http的流量 點擊一條流量&#xff0c;里面的內容進去后面有基于行的文本數據&#xff0c; 先解he…

頭歌實踐教學平臺--【數據庫概論】--SQL

一、表結構與完整性約束的修改(ALTER) 1.修改表名 USE TestDb1; alter table your_table rename TO my_table; 2.添加與刪除字段 #語句1&#xff1a;刪除表orderDetail中的列orderDate alter table orderDetail drop orderDate; #語句2&#xff1a;添加列unitPrice alter t…

在 React 中,組件之間傳遞變量的常見方法

目錄 1. **通過 Props 傳遞數據**2. **通過回調函數傳遞數據**3. **通過 Context API 傳遞數據**4. **通過 Redux 管理全局狀態**5. **通過事件總線&#xff08;如 Node.js 的 EventEmitter&#xff09;**6. **通過 Local Storage / Session Storage**7. **通過 URL 查詢參數傳…

Redis + 布隆過濾器解決緩存穿透問題

Redis 布隆過濾器解決緩存穿透問題 1. Redis 布隆過濾器解決緩存穿透問題 &#x1f4cc; 什么是緩存穿透&#xff1f; 緩存穿透指的是查詢的數據既不在緩存&#xff0c;也不在數據庫&#xff0c;導致每次查詢都直接訪問數據庫&#xff0c;增加數據庫壓力。 例如&#xff1…

Vue動態添加或刪除DOM元素:購物車實例

Vue 指令系列文章: 《Vue插值:雙大括號標簽、v-text、v-html、v-bind 指令》 《Vue指令:v-cloak、v-once、v-pre 指令》 《Vue條件判斷:v-if、v-else、v-else-if、v-show 指令》 《Vue循環遍歷:v-for 指令》 《Vue事件處理:v-on 指令》 《Vue表單元素綁定:v-model 指令》…

vue h5實現車牌號輸入框

哈嘍&#xff0c;大家好&#xff0c;最近鵬仔開發的項目是學校校內車輛超速方面的統計檢測方面的系統&#xff0c;在開發過程中發現有個小功能&#xff0c;就是用戶移動端添加車牌號&#xff0c;剛開始想著就一個輸入框&#xff0c;提交時正則效驗一下格式就行&#xff0c;最后…

硬件基礎(5):(3)二極管的應用

文章目錄 [toc]1. **整流電路****功能**&#xff1a;**工作原理**&#xff1a;**應用實例**&#xff1a;電路組成&#xff1a;整流過程&#xff1a;電路的應用&#xff1a; 2. **穩壓電路****功能**&#xff1a;**工作原理**&#xff1a;**應用實例**&#xff1a;電路組成及功能…

Wireshark網絡抓包分析使用詳解

序言 之前學計網還有前幾天備考華為 ICT 網絡賽道時都有了解認識 Wireshark&#xff0c;但一直沒怎么專門去用過&#xff0c;也沒去系統學習過&#xff0c;就想趁著備考的網絡相關知識還沒忘光&#xff0c;先來系統學下整理點筆記~ 什么是抓包&#xff1f;抓包就是將網絡傳輸…