線上事故處理記錄

線上事故處理記錄

一、MySQL 導致的服務器 CPU 飆升

有一天,突然收到了服務器 CPU 飆升的告警信息,打開普羅米修斯查看 CPU 的使用情況,發現 CPU 確實飆升了,下面開始去進行問題定位了。 1. 首先連接到對應的服務器,然后執行

top

查看導致 CPU 飆升的進程是什么,發現是 mysqld 進程導致的

  1. 進入 MySQL 服務器中,執行下面的命令
show processlist

補充: show processlist 命令的主要用途

  1. 查看當前有哪些客戶端連接
  2. 查看當前執行的 SQL 語句,能看到慢 SQL、長時間阻塞的查詢等
  3. 排查鎖等待、死鎖等問題,發現“Locked”的狀態,表示線程在等待鎖
  4. 排查連接數過多問題,判斷是否有連接未正確釋放或連接池配置不當

其實,此時通過查看結果,我基本可以確認是慢 SQL 導致的問題了,但是我還不能那么 100%確認,為了保險起見,我是這么處理的,我先將對應的 SQL 粘出來,然后使用 kill 命令將對應的線程殺死,來判斷是不是因為這個查詢 sql 導致的 CPU 飆升,結果發現確實 kill 之后,CPU 有所下降,那么說明這個 sql 肯定性能很差,先不說別的,這個 SQL 肯定要先優化一下

  1. 使用 explain 去分析這個 sql
# 舉個例子而已,不是真實的sql,不要較真偶
explain select xxx from table where code='xxx';

發現這個 SQL 沒有使用索引,于是我去表中查看了一下表結構,發現確實在 code 這個字段上是沒有索引的,于是給這個 code 增加了一個唯一索引,重新 explain 分析這個 SQL,發現效果大大提高

  1. 正當我認為這個問題被我處理完之后,沒想到過了幾分鐘,又出現問題了,出現了大量請求超時問題,接著分析,發現是開啟了慢日志查詢,有很多 SQL 超過了設置的慢查詢閾值。于是我將慢日志查詢關閉,CPU 又有所下降,但是發現還不是特別理想。
  2. 接下來怎么做呢?我是這么想的,在 MySQL 這層我已經做了優化了,剩下的只能去看代碼邏輯了,看看他是如何處理的,然后我就去扒代碼,結果發現沒有使用緩存,所有的查詢都是直接走的 DB,所以我增加了 Redis 緩存層,重新發布后,發現 CPU 確實穩定下來了,也沒有再進行飆升。

補充:

在最后再補充一下,有時候 MySQL 層出現問題可能是由于大量的連接導致的,這個時候就要分析為什么有大量的連接同時過來,以及設置一個比較合理的連接數。

本次事故總結: 本次事故是因為沒有做好數據庫評審,由于開發人員沒有建立索引導致慢 SQL 的出現;以及所有查詢都走 DB 沒有使用緩存層導致 MySQL 壓力大。

二、Java 進程導致 CPU 飆升

依然是先收到了 CPU 超載的告警信息,然后去普羅米修斯上看了一下,CPU 一直持續在高負荷,然后我進到對應的服務器中。

  1. 首先執行 top 命令

    top
    

    查看導致 CPU 飆升的進程是什么,發現是對應的 Java 進程導致的 CPU 飆升

  2. 執行

    top -Hp PID
    

    來查看對應的 Java 進程中的線程的資源占用情況,發現有多個線程 CPU 的利用率達到了 99.9%

  3. 將堆棧信息導出來

    jstack -l 進程ID >/jstack_result.txt
    

4.堆棧信息導出來了,那么多內容如何快速定位到出現問題的線程代碼呢,那么需要將第 2 步得到的線程 PID 轉成對應的 16 進制

printf "%xn" PID

然后在堆棧信息中搜索 記得前面可以加一個 0x 開頭

這樣就可以定位到具體的代碼行數了,你就可以去到代碼里面看看是什么問題了

在這里我通過定位發現了一直在空循環,所以導致 CPU 飆升。 gggg…

本次問題總結:代碼評審沒做到位!!!

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

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

相關文章

ParaCAD 筆記 png 圖紙標注數據集

ParaCAD-Dataset git lfs install git clone https://www.modelscope.cn/datasets/yuwenbonnie/ParaCAD-Dataset.git https://github.com/ParaCAD/ 不止100g 下個最小的 沒有三視圖

C#使用Semantic Kernel實現Embedding功能

1、背景 C#開發中,可以通過Semantic Kernel實現本地模型的調用和實現。 本地的Ollama的版本如下:安裝的Package如下:2、代碼實現 // See https://aka.ms/new-console-template for more information using Microsoft.Extensions.AI; using Mi…

轉轉APP逆向

APP版本 11.15.0 接口分析 # URL https://app.zhuanzhuan.com/zz/transfer/search# header cookie xxx x-zz-monitoring-metrics feMetricAntiCheatLevelV1 zztk user-agent Zhuan/11.15.0 (11015000) Dalvik/2.1.0 (Linux; U; Android 10; Pixel 3 Build/QQ3A.200805.001) z…

注解與反射的完美配合:Java中的聲明式編程實踐

注解與反射的完美配合:Java中的聲明式編程實踐 目錄 引言 核心概念 工作機制 實戰示例 傳統方式的痛點 注解反射的優勢 實際應用場景 最佳實踐 總結 引言 在現代Java開發中,我們經常看到這樣的代碼: Range(min 1, max 50)priva…

開源入侵防御系統——CrowdSec

1、簡介 CrowdSec 是一款現代化、開源、基于行為的入侵防御系統(IDS/IPS),專為保護服務器、服務、容器、云原生應用而設計。它通過分析日志檢測可疑行為,并可基于社區協作共享惡意 IP 黑名單,從而實現分布式防御。 其…

imx6ull-裸機學習實驗13——串口格式化函數移植實驗

目錄 前言 格式化函數 實驗程序編寫 stdio文件夾 main.c Makefile修改 編譯下載 前言 在學習實驗12:imx6ull串口通信實驗,我們實現了 UART1 基本的數據收發功能,雖然可以用來調試程序,但是功能太單一了,只能輸出…

CCF-GESP 等級考試 2025年6月認證C++三級真題解析

1 單選題(每題 2 分,共 30 分)第1題 8位二進制原碼能表示的最小整數是:( )A. -127 B. -128 C. -255 …

【網絡安全】服務間身份認證與授權模式

未經許可,不得轉載。 文章目錄 問題背景用戶到服務的身份認證與授權系統對系統的通信服務與服務之間的通信需求分析Basic Auth(基本身份認證)優點缺點mTLS 證書認證優點缺點OAuth 2.0優點缺點JWS(JSON Web Signature)優點缺點結合 Open Policy Agent 的 JWS 方案優點缺點結…

【EGSR2025】材質+擴散模型+神經網絡相關論文整理隨筆(四)

An evaluation of SVBRDF Prediction from Generative Image Models for Appearance Modeling of 3D Scenes輸入3D場景的幾何和一張參考圖像,通過擴散模型和SVBRDF預測器獲取多視角的材質maps,這些maps最終合并成場景的紋理地圖集,并支持在任…

Grid網格布局完整功能介紹和示例演示

CSS Grid布局是一種強大的二維布局系統,可以將頁面劃分為行和列,精確控制元素的位置和大小。以下是其完整功能介紹和示例演示: 基本概念 網格容器(Grid Container):應用display: grid的元素。網格項&#x…

學習C++、QT---21(QT中QFile庫的QFile讀取文件、寫入文件的講解)

每日一言把大目標拆成小步,每天前進一點點,終會抵達終點。QFile讀取文件我們記事本要進行讀取文件、寫入文件、等等的操作,那么這個時候我們的QT有一個QT類叫做QFile這個類的話是專門對于文件操作的,所以我們來學習我們在QT的幫助…

AD736ARZ-R7精密真有效值轉換器 高精度測量的首選方案

AD736ARZ-R7精密轉換器產品概述AD736ARZ-R7是ADI(Analog Devices Inc.)推出的一款低功耗、高精度的真有效值(RMS)轉直流(DC)轉換器,采用SOIC-8封裝,適用于需要精確測量交流或復雜波形…

【web應用】若依框架前端報表制作與導出全攻略(ECharts + html2canvas + jsPDF)

文章目錄前言一、ECharts準備工作1. 檢查ECharts安裝2. 導入ECharts3. 創建餅圖組件4. 模板部分二、報表導出功能實現1. 安裝依賴2. 導入依賴3. 完整導出函數實現4. 樣式優化三、完整組件實現四、常見問題與解決方案1. 圖表截圖不完整或模糊2. 圖表背景透明3. 導出PDF中文亂碼4…

vue3+express聯調接口時報“\“username\“ is required“問題

我用node .js的express框架寫的登錄接口,發現postman可以調通,但是vue3前端報錯vue3我發現是我后端node.js的app.js入口文件中配置的解析前端參數的解析中間件和前端請求頭中的Content-Type配置不一致的原因 解決方案 因為我后端配置解析表單數據的中間件…

《月亮與六便士》:天才的背叛與凡人救贖的殘酷辯證法

當滿地六便士成了庸人的火葬場??毛姆筆下的斯特里克蘭德,是一把捅穿中產幻夢的利刃。這個拋妻棄子、背叛友人的證券經紀人,在倫敦客廳的茶香與銀勺碰撞聲中,突然聽見了遠方的驚雷——“我必須畫畫”。如書中所言:??“在滿地都…

vue2往vue3升級需要注意的點(個人建議非必要別直接升級)

將 Vue 2 項目升級到 Vue 3 的過程中,需要重點關注以下幾個難點和關鍵點: 建議小項目直接用vue3重寫更快,bug更少 文章目錄1. **Composition API 的學習與應用**2. **全局 API 的變更**3. **模板語法的兼容性變化**4. **組件選項和生命周期的…

聚焦數據資源建設與應用,浙江省質科院赴景聯文科技調研交流

7月10日上午,浙江省質科院標準化中心副主任蔣建平、應珊婷等一行領導帶隊蒞臨景聯文科技調研指導工作。雙方圍繞工業數據展開深度交流。座談會上,景聯文科技詳細匯報了數據資源建設與應用方面的成果與規劃,介紹了公共數據授權運營與對外合作的…

【Linux】系統引導修復

目錄 開機引導過程 一.通電 二.BIOS環境檢測 三.磁盤引導階段 四.文件引導階段 自動引導配置文件丟失修復 內核參數文件丟失修復 內核鏡像文件丟失修復 內核初始化文件丟失修復 boot目錄誤刪丟失修復 開機引導過程 磁盤引導階段 /boot/grub2/grub.cfg #讀取自動引…

2023年全國青少年信息素養大賽C++編程初中組決賽真題+答案解析

2023年全國青少年信息素養大賽C++編程初中組決賽真題+答案解析 編程題 第一題 判斷是否存在重復的子序列 題目描述 從m 個字符中選取字符,生成n 個符號的序列,使得其中沒有2 個相鄰的子序列相同? 如從1,2,3,生成長度為5 的序列,序列“12321”是合格的,而“12323”和“12123”…

MySQL5.78.0鎖表確認及解除鎖表完全指南

目錄 一、MySQL鎖機制基礎 1.1 鎖的分類與作用 1.2 關鍵鎖類型詳解 二、鎖表的常見原因與風險 2.1 引發鎖表的典型場景 2.2 鎖表的業務影響 三、鎖表狀態確認方法 3.1 基礎工具:SHOW PROCESSLIST 3.2 MySQL 8.0鎖信息查詢(推薦) 3.2…