AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

大廠真實案例,CPU 升高問題如何排查?五分鐘掌握

來源: 責編: 時間:2024-06-07 17:20:01 211觀看
導讀好久沒寫技術文章了,今天下班“早”,簡單叨叨一篇。早下班的原因說起來也有點搞笑,是因為健身時候杠鈴把手上砸了個口子。砸傷當時我看了一眼,雖然很痛但骨頭沒事,竟然心中還有一絲慶幸。縫針吧,有點夸張,不處理吧,還挺深。于

好久沒寫技術文章了,今天下班“早”,簡單叨叨一篇。OgM28資訊網——每日最新資訊28at.com

早下班的原因說起來也有點搞笑,是因為健身時候杠鈴把手上砸了個口子。砸傷當時我看了一眼,雖然很痛但骨頭沒事,竟然心中還有一絲慶幸。縫針吧,有點夸張,不處理吧,還挺深。于是,我在從醫院處理完傷口后,有了這篇文章。OgM28資訊網——每日最新資訊28at.com

好了,言歸正傳。OgM28資訊網——每日最新資訊28at.com

CPU 升高問題案例

市面上通常對于 CPU 問題排查的案例面試比較少,基本上都在講:如果 CPU 升到 100% 怎么辦?OgM28資訊網——每日最新資訊28at.com

這確實是個高頻問題,必須需要流利回答。之前也寫過一篇文章,可以參考:OgM28資訊網——每日最新資訊28at.com

圖片圖片OgM28資訊網——每日最新資訊28at.com

重點問題!CPU利用率過高排查思路|原創OgM28資訊網——每日最新資訊28at.com

OgM28資訊網——每日最新資訊28at.com

真實案例

這是一個今天發生的真實案例(相關信息已脫敏處理,不影響案例本質)。OgM28資訊網——每日最新資訊28at.com

問題如下:這是一個比較大項目改動,改造的過程中涉及到了相當多下游接口的改動和相當多的依賴包。今天在上線發布后經過接口和功能驗證,需求發布成功。OgM28資訊網——每日最新資訊28at.com

但是接著,我發布完成后才發現機器的平均 CPU 負載升高,平均 CPU 負載幾乎升高了有 5-8 %,最高負載更是超過了 CPU 安全水位線。如此多的改動,到底是什么導致了 CPU 負載的上升?OgM28資訊網——每日最新資訊28at.com

我自己用 python 花了張圖,大概下面這個樣子OgM28資訊網——每日最新資訊28at.com

圖片圖片OgM28資訊網——每日最新資訊28at.com

問題出現,CPU 升高OgM28資訊網——每日最新資訊28at.com

快速處理: 我先快速對比了一下 CPU 負載升高的時間點,和發布時間基本對應,基本可以判斷是本次發布引起的。雖然并沒有影響到業務,但是發現問題后,我還是第一時間做了回滾處理。OgM28資訊網——每日最新資訊28at.com

注意:發布過程中出現任何問題不要想排查問題原因,直接回滾,血淚教訓的鐵律OgM28資訊網——每日最新資訊28at.com

排查問題

我排查問題的思路如下:OgM28資訊網——每日最新資訊28at.com

  1. 由于想到本次變更有很多新接口的引入,也有一些接口的對比代碼,會帶來額外的性能消耗,所以我先對比了發布前后的接口遠程調用情況,結果是調用量沒有明顯變化,RT 也正常。
  2. 服務也有 kafka 消息處理,同樣檢查消息組件情況,調用量沒有變化。
  3. 會不會是 GC 太多導致?檢查 JVM 情況,依舊正常,甚至還因為重啟機器表現要比之前好……
  4. 因為用到了線程池,會不會是因為使用線程池不合理,或者有什么死循環之類的。檢查活躍線程情況,依舊和發布前相似。
  5. 那只能考慮是因為引入的某個依賴引起的了,他導致了預期外的變化。

問題引入的依賴有很多,到底是哪個依賴引入的?我難道一個個下掉去排查嗎?OgM28資訊網——每日最新資訊28at.com

排除法,這也確實是一種辦法,只不過是太辛苦了,事倍功半。更不用說還需要下掉相關代碼,還得不斷去耗時發布,實在是繁瑣。OgM28資訊網——每日最新資訊28at.com

怎么辦呢?不賣關子了,直接上 Arthas。OgM28資訊網——每日最新資訊28at.com

Async-profiler

Arthas 使用 async-profiler 生成 CPU/內存火焰圖進行性能分析,彌補了之前內存分析的不足。OgM28資訊網——每日最新資訊28at.com

async-profiler 是一款開源的 Java 性能分析工具,原理是基于 HotSpot 的 API,以微乎其微的性能開銷收集程序運行中的堆棧信息、內存分配等信息進行分析。OgM28資訊網——每日最新資訊28at.com

官網:https://github.com/async-profiler/async-profilerOgM28資訊網——每日最新資訊28at.com

我們常用的是 CPU 性能分析和 Heap 內存分配分析。在進行 CPU 性能分析時,僅需要非常低的性能開銷就可以進行分析。OgM28資訊網——每日最新資訊28at.com

在進行 Heap 分配分析時,async-profiler 工具會收集內存分配信息,而不是去檢測占用 CPU 的代碼。async-profiler 不使用侵入性的技術,例如字節碼檢測工具或者探針檢測等,這也說明 async-profiler 的內存分配分析像 CPU 性能分析一樣,不會產生太大的性能開銷,同時也不用寫出龐大的堆棧文件再去進行進一步處理,。OgM28資訊網——每日最新資訊28at.com

async-profiler 工具在采樣后可以生成采樣結果的日志報告,也可以生成 SVG 格式的火焰圖。OgM28資訊網——每日最新資訊28at.com

圖片圖片OgM28資訊網——每日最新資訊28at.com

具體使用大家直接去官網看文檔吧,有不懂留言。我這里直接說使用OgM28資訊網——每日最新資訊28at.com

使用 async-profiler 排查問題

進入測試服務器控制臺,使用 JPS 命令查看 PID 信息。OgM28資訊網——每日最新資訊28at.com

?  develop jps2800 Jps528 TestCode2450 Launcher

假設運行程序的名是 TestCode,可以看到對應的 PID 是 528。OgM28資訊網——每日最新資訊28at.com

使用下面命令:OgM28資訊網——每日最新資訊28at.com

./profiler.sh -d 20 -f 528.svg 528

對 528 號進程采樣20秒,然后得到生成的 528.svg 文件,然后我們使用瀏覽器打開這個文件,可以看到 CPU 的使用火焰圖,如下(這里用網絡圖片代替):OgM28資訊網——每日最新資訊28at.com

圖片圖片OgM28資訊網——每日最新資訊28at.com

關于火焰圖怎么看,一言以蔽之:火焰圖里,橫條越長,代表使用的越多,從下到上是調用堆棧信息。 在這個圖里可以看到 main 方法上面的調用中 hotmethod3 方法的 CPU 使用是最多的,點擊這個方法。還可能看到更詳細的信息。OgM28資訊網——每日最新資訊28at.com

那么我們現在只需要查找 hotmethod3 使用的地方在哪里,就可以定位到問題代碼。OgM28資訊網——每日最新資訊28at.com

當然,上面的是個代替 case,告訴你怎么看這個火焰圖。真實的 case 要比這個更難排查。如下圖,問題代碼是個線程,是由某個類調用的:OgM28資訊網——每日最新資訊28at.com

圖片圖片OgM28資訊網——每日最新資訊28at.com

排查問題依賴引入

問題代碼是一個 Thread 的 run 方法引起的,那么是誰調用的他呢?這個類的信息我打碼了,假設為 ClassA。OgM28資訊網——每日最新資訊28at.com

但是排查代碼,ClassA 根本沒有被項目代碼直接的調用,于是我找到了這個 CalssA 所屬的依賴包 dep-demoA,看他是誰引入的。OgM28資訊網——每日最新資訊28at.com

./gradlew :項目名:dependencyInsight --dependency dep-demoA

這個命令會打出一個項目的依賴樹,結果如下:OgM28資訊網——每日最新資訊28at.com

+--- com.ali:dep-demoA:1.0.0 (*)/--- com.ali:dep-demoB:1.0.0     /--- com.ali:dep-demoC:1.0.0

如上結果,項目中我是用的是 dep-demoC,結果他同時引入了 dep-demoB,我看了下這個 demoB,他很可能會跟 arthas 類似,通過 Java Agent技術和字節碼增強技術以實現一定的功能,這對程序是非常有損耗的。(所以線上不能開 arthas)OgM28資訊網——每日最新資訊28at.com

嘗試排除 demoB,代碼如下:OgM28資訊網——每日最新資訊28at.com

all*.exclude group: "com.ali", module: "dep-demoB"

然后重啟項目,CPU 負載下降,回歸到正常水平,問題解決。OgM28資訊網——每日最新資訊28at.com

圖片圖片OgM28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-92746-0.html大廠真實案例,CPU 升高問題如何排查?五分鐘掌握

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 避免刪庫跑路的辦法,你知道嗎?

下一篇: React 19 出手解決了異步請求的競態問題,是好事還是壞事?

標簽:
  • 熱門焦點
  • 掘力計劃第 20 期:Flutter 混合開發的混亂之治

    在掘力計劃系列活動第20場,《Flutter 開發實戰詳解》作者,掘金優秀作者,Github GSY 系列目負責人戀貓的小郭分享了Flutter 混合開發的混亂之治。Flutter 基于自研的 Skia 引擎
  • 如何使用JavaScript創建一只圖像放大鏡?

    譯者 | 布加迪審校 | 重樓如果您曾經瀏覽過購物網站,可能遇到過圖像放大功能。它可以讓您放大圖像的特定區域,以便瀏覽。結合這個小小的重要功能可以大大改善您網站的用戶體驗
  • 微信語音大揭秘:為什么禁止轉發?

    大家好,我是你們的小米。今天,我要和大家聊一個有趣的話題:為什么微信語音不可以轉發?這是一個我們經常在日常使用中遇到的問題,也是一個讓很多人好奇的問題。讓我們一起來揭開這
  • 2天漲粉255萬,又一賽道在抖音爆火

    來源:運營研究社作者 | 張知白編輯 | 楊佩汶設計 | 晏談夢潔這個暑期,旅游賽道徹底火了:有的「地方」火了——貴州村超旅游收入 1 個月超過 12 億;有的「博主」火了&m
  • 梁柱接棒兩年,騰訊音樂闖出新路子

    文丨田靜 出品丨牛刀財經(niudaocaijing)7月5日,企鵝FM發布官方公告稱由于業務調整,將于9月6日正式停止運營,這意味著騰訊音樂長音頻業務走向消亡。騰訊在長音頻領域還在摸索。為
  • 拼多多APP上線本地生活入口,群雄逐鹿萬億市場

    Tech星球(微信ID:tech618)文 | 陳橋輝 Tech星球獨家獲悉,拼多多在其APP內上線了“本地生活”入口,位置較深,位于首頁的“充值中心”內,目前主要售賣美食相關的
  • 阿里瓴羊One推出背后,零售企業迎數字化新解

    作者:劉曠近年來隨著數字經濟的高速發展,各式各樣的SaaS應用服務更是層出不窮,但本質上SaaS大多局限于單一業務流層面,對用戶核心關切的增長問題等則沒有提供更好的解法。在Saa
  • 小米公益基金會捐贈2500萬元馳援北京、河北暴雨救災

    8月2日消息,今日小米科技創始人雷軍在其微博上發布消息稱,小米公益基金會宣布捐贈2500萬元馳援北京、河北暴雨救災。攜手抗災,京冀安康!以下為公告原文
  • “買真退假” 這種“羊毛”不能薅

    □ 法治日報 記者 王春   □ 本報通訊員 胡佳麗  2020年初,還在上大學的小東加入了一個大學生兼職QQ群。群主“七王”在群里介紹一些刷單賺
Top