記一次jvm機器問題定位經歷

背景

開發過程中發現機器指標異常,端口也hang住無響應,端口返回為timeout,對應探活檢測也失敗了。

現象

在st測試環節,突然每隔一段時間新接口就hang住無響應,觀察機器監控也發現端口探活失敗,看機器指標也無上報。

原因

開發新注入了bean,導致metaspace超出分配區間,頻繁fullgc導致機器無響應。

解決

定位到時metaspace分配不足,通過調大分配空間解決。

定位過程

一般定位方向有兩個,通過看機器指標就可以發現:

  • cpu方面:有死循環或線程過多,導致cpu被占用無法響應其他請求。
  • 內存方面:內存泄露導致頻繁gc或fullgc。
  1. 查看機器指標:查看發現業務cpu占用無明顯升高,有些許降低,元空間占用情況升高。
  2. 查看機器gc日志:發現機器一直在fullgc
  3. 查看機器堆棧dump信息:發現堆內存比分配的小得多,但gc日志顯示每次gc的減小量都很小。所以大概猜到是元空間的問題了。
  4. 查看應用的啟動參數,發現metaspace使用空間大于分配空間:應用啟動時會分配jvm的內存分配情況,參數是-XX:MaxMetaspaceSize=XXX。發現分配了256M,高的時候就占了250+M了,很明顯是新開發代碼新注入的bean導致的,通過增大元空間參數解決。

一些擴展知識

端口探活方式

  • telnet <ip> <port>:telnet打通=端口通+網絡通。只能分析??服務是否起來 或? 網絡是否正常? 或? 是否有防火墻等類似問題。此時服務可能不可用,但端口是通的。
  • nc -zv <ip> <port>:-z?只掃描端口,不發送數據,-v?顯示詳細信息。端口存活會顯示 succeeded 或 open。
  • 對于rpc框架,可以自定義端口的探活方式,通過服務端實現healthCheck()?或ping()方法實現探活。

機器gc日志指標

  • 開啟機器gc記錄的指令

jdk8之前:

-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-XX:+PrintGCTimeStamps
-Xloggc:/path/to/gc.log

jdk8之后:

-Xlog:gc*:file=/path/to/gc.log:time,uptime,level,tags
  • 機器gc日志存放位置:在Xloggc對應的路徑下

機器jvm內存使用情況

  • 查看堆內存情況,每秒1次,輸出10次:jstat -heap <PID>?1000 10
  • 查看metaspace情況:
    jstat -gcmetacapacity <pid>
    

jstat內存輸出各指標含義:

指標含義
S0CSurvivor 0 區的容量(單位:KB)
S1CSurvivor 1 區的容量(單位:KB)
S0USurvivor 0 區已使用空間(單位:KB)
S1USurvivor 1 區已使用空間(單位:KB)
ECEden 區的容量(單位:KB)
EUEden 區已使用空間(單位:KB)
OCOld 區(老年代)容量(單位:KB)
OUOld 區(老年代)已使用空間(單位:KB)
PCPerm 區(永久代)容量(單位:KB)(JDK8之前)或 Metaspace 容量(JDK8及以后,部分實現中)
PUPerm 區(永久代)已使用空間(單位:KB)(JDK8之前)或 Metaspace 已用(JDK8及以后,部分實現中)
YGC從 JVM 啟動到采樣時發生的 Young GC(新生代GC)次數
YGCT從 JVM 啟動到采樣時 Young GC 所用時間(單位:秒)
FGC從 JVM 啟動到采樣時發生的 Full GC(老年代GC)次數
FGCT從 JVM 啟動到采樣時 Full GC 所用時間(單位:秒)
GCT從 JVM 啟動到采樣時 GC 總耗時(單位:秒),等于 YGCT + FGCT

機器線程情況分析

堆棧dump指令,只能用來分析進程中的線程情況。

jstack -<PID>

jstack的作用:jstack 是 JDK 自帶的一個非常重要的命令行工具,主要用于生成 Java 進程的線程快照(線程堆棧信息),幫助開發者排查和分析 Java 應用中的線程相關問題。但無法得到堆內存,元空間等內存信息。

metaspace

  • 作用:是jdk8后取代永久代的空間,用于存放類的元數據(類結構,類方法,常量池等)。
  • 監控的指令:
jmap -clstats <pid>

jstat -gcmetacapacity <pid>

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

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

    相關文章

    【機器學習深度學習】張量基本操作

    目錄 一、張量基本操作 1.1 執行代碼 1.2 運行結果 1.3 代碼解析 ? 1. 創建張量&#xff08;tensor、randn、zeros&#xff09; ? 2. 索引與切片&#xff08;類似 NumPy&#xff09; ? 3. 形狀變換&#xff08;reshape、轉置、壓縮&#xff09; ? 4. 數學運算&#x…

    【微信小程序】8、獲取用戶當前的地理位置

    1、獲取當前的地理位置 獲取當前的地理位置、速度。當用戶離開小程序后&#xff0c;此接口無法調用。開啟高精度定位&#xff0c;接口耗時會增加&#xff0c;可指定 highAccuracyExpireTime 作為超時時間。 注意&#xff1a; 地圖相關使用的坐標格式應為 gcj02。高頻率調用會…

    Jenkins 常用定時構建腳本

    Jenkins 常用定時構建腳本 Jenkins 使用 cron 風格的語法來配置定時構建任務&#xff0c;以下是常用的定時構建腳本示例和說明&#xff1a; 基本語法 Jenkins 定時構建使用五個字段表示時間&#xff0c;格式為&#xff1a; MINUTE HOUR DOM MONTH DOWMINUTE - 分鐘 (0-59)H…

    ActiveMQ漏洞復現

    以下內容均在nextcyber靶場環境中完成&#xff0c;請勿用于非法途徑&#xff01; ActiveMQ 反序列化漏洞&#xff08;CVE-2015-5254&#xff09; Apache ActiveMQ是美國阿帕奇&#xff08;Apache&#xff09;軟件基金會所研發的一套開源的消息中間件&#xff0c;它支持Java消息…

    環保處理設備遠程運維管理解決方案

    在環保產業蓬勃發展的當下&#xff0c;環保處理設備廠商面臨著愈發激烈的市場競爭。為助力環保處理設備廠商在競爭中脫穎而出&#xff0c;御控工業智能網關打造了一套完善的PLC數據采集設備運維管理平臺解決方案。此方案憑借其獨特優勢&#xff0c;能為環保處理設備廠商帶來顯著…

    嵌入式學習筆記DAY43(ARM架構)

    一、RAM分類 sram&#xff08;靜態隨機存取存儲器&#xff09;&#xff1a; 原理&#xff1a;使用晶體管來存儲二進制數據0和1&#xff0c;通過雙穩態電路&#xff08;由多個晶體管組成&#xff09;來保持數據狀態&#xff0c;只要持續供電&#xff0c;數據就能穩定保存。數據讀…

    2025國際無人機應用及防控大會四大技術專題深度解析

    2025國際無人機應用及防控大會四大技術專題深度解析 2025國際無人機應用及防控大會四大技術專題深度解析1 無人機系統技術專題技術特點與應用領域國內領軍企業及案例風險挑戰與發展方向 2 測控與通信導航技術專題技術創新與應用突破領先企業及解決方案現存問題與發展趨勢 3 任務…

    DD3118S:USB3.0+Type-c雙頭TF/SD二合一高速0TG多功能手機讀卡器ic

    DD3118S封裝是QFN42, GL3224封裝是QFN32 &#xff0c;設計同樣一款3.0讀卡方案&#xff0c;GL3213S需要電容、電阻外圍器件一起要29顆&#xff0c;而DD3118S只需要13顆&#xff0c;方案精簡且設計簡單 DD3118S支持USB3.0Type-c雙頭TF/SD二合一 &#xff0c;高速0TG多功能手機讀…

    如何在FastAPI中玩轉GitHub認證,讓用戶一鍵登錄?

    title: 如何在FastAPI中玩轉GitHub認證,讓用戶一鍵登錄? date: 2025/06/22 09:11:47 updated: 2025/06/22 09:11:47 author: cmdragon excerpt: GitHub第三方認證集成通過OAuth2.0授權碼流程實現,包含用戶跳轉GitHub認證、獲取授權碼、交換訪問令牌及調用API獲取用戶信息四…

    深入JVM:從零到實戰,解鎖Java性能與調優的終極武器

    “什么&#xff1f;你還在寫CRUD&#xff1f;面試官問個JVM調優直接啞火&#xff1f;線上服務OOM了只能重啟大法&#xff1f;” —— 別慌&#xff0c;掌握JVM&#xff0c;你也能成為團隊里的“定海神針”&#xff01; 作為一名Java開發者&#xff0c;無論你是剛入行的新人還是…

    MyBatis 中的 resultType 與 resultMap:區別、使用場景及示例詳解

    目錄 一、什么是 resultType 1. 定義 2. 特點 3. 使用場景 4. 示例 示例 1&#xff1a;返回一個實體類對象 對應的 Java 類&#xff1a; 示例 2&#xff1a;返回 Map 集合 返回的每個記錄是一個 Map&#xff0c;例如&#xff1a; 二、什么是 resultMap 1. 定義 2. …

    Mac安裝Apache CXF的時候報錯:/Library/Internet: No such file or directory

    該問題的原因因為配置的JAVA_HOME環境變量路徑中的包括空格字符導致的錯誤。 一、問題排查 輸出當前環境變量 $JAVA_HOME的路徑地址&#xff0c;觀察路徑中是否存在空格 echo $JAVA_HOME二、問題解決 將JAVA_HOME路徑改為你安裝的jdk路徑&#xff0c;注意你的版本號可能與我的會…

    npm(或pnpm)時報:證書過期 certificate has expired問題

    項目場景&#xff1a; 提示&#xff1a;這里簡述項目相關背景&#xff1a; 首先安裝pnpm npm install -g pnpm //檢查安裝成功的版本 pnpm -v 在拉芋道管理系統&#xff0c;安裝依賴pnpm i 時報證書過期 更改了鏡像也一樣 解決方案&#xff1a; 提示&#xff1a;這里填寫該…

    回歸預測 | Matlab實現KAN神經網絡多輸入單輸出回歸預測模型

    回歸預測 | Matlab實現KAN神經網絡多輸入單輸出回歸預測模型 目錄 回歸預測 | Matlab實現KAN神經網絡多輸入單輸出回歸預測模型效果一覽基本介紹程序設計參考資料 效果一覽 基本介紹 KAN作為這兩年最新提出的機制&#xff0c;目前很少人用&#xff0c;很適合作為預測的創新點&…

    人生筆記Real:記錄生活點滴,守護珍貴記憶

    在快節奏的現代生活中&#xff0c;我們常常會有一些瞬間的靈感、難忘的經歷或者需要記錄的重要事項。然而&#xff0c;如何高效地記錄這些內容&#xff0c;并確保它們不會隨著時間的流逝而丟失&#xff0c;成為了一個值得思考的問題。《人生筆記Real》正是這樣一款簡單好用的筆…

    自動駕駛數據特征提取實戰:用Python打開智能駕駛的新視角

    自動駕駛數據特征提取實戰:用Python打開智能駕駛的新視角 聊起自動駕駛,很多朋友第一時間想到的可能是“車上的攝像頭多牛,傳感器多先進”,但讓我告訴你,真正決定自動駕駛“大腦”能不能跑得順暢、跑得準的,是數據的“骨頭”—特征。 沒錯,機器學習、深度學習的基礎都…

    從零搭建共享棋牌室物聯網系統:硬件選型與避坑指南!

    近來&#xff0c;24小時共享棋牌室憑借“低成本、無人化、高坪效”的特點成為創業熱點。但許多項目在硬件選型階段就踩坑不斷——設備不兼容、安裝返工、售后無門等問題頻發。本文將結合實戰經驗&#xff0c;手把手教你從零搭建穩定可靠的棋牌室物聯網硬件系統&#xff0c;并附…

    NPM 依賴包版本號 `~` 和 `^` 的區別及最佳實踐

    本文將深入淺出地解釋 ~ 與 ^ 在 package.json 中的含義&#xff0c;并結合實際開發流程給出團隊協作與發布上線的最佳版本管理策略。 一、版本號的基本結構 NPM 依賴的版本號遵循 SemVer&#xff08;語義化版本&#xff09; 標準&#xff1a; 主版本號.次版本號.補丁號Major…

    uniapp報錯Cannot read property ‘dataset‘ of null

    如果你引入的組件在uniapp分包路徑中&#xff0c;就會報錯

    服務器常見問題以及解決方案

    以下是服務器常見問題及對應的維護解決方案&#xff0c;涵蓋硬件、網絡、軟件、安全等核心場景&#xff0c;基于最新行業實踐整理&#xff1a; 一、硬件層故障? 硬盤失效? 現象?&#xff1a;系統崩潰、IO錯誤、SMART告警。 解決?&#xff1a; 立即更換故障盤&#xff0c…