MySQL內存使用率高問題排查與解決方案:

目錄標題

      • **一、問題現象**
      • **二、核心排查步驟**
        • **1. 參數檢查**
        • **2. 內存使用分析**
        • **3. 存儲過程/函數/視圖檢查**
        • **4. 操作系統級檢查**
      • **三、解決方案**
        • **1. 調整MySQL配置**
        • **2. 關閉透明大頁(THP)**
        • **3. 優化查詢與存儲過程**
        • **4. 硬件與環境優化**
      • **四、總結**

MySQL內存使用率高問題排查與解決方案:

一、問題現象

  • 內存占用異常:通過top命令發現MySQL進程(mysqld)占用了90.7%的物理內存(56.5G/62G)。
  • 系統負載:CPU使用率較低(1.3%),但內存幾乎耗盡。

二、核心排查步驟

1. 參數檢查
  • MySQL版本:8.0.39(未開啟慢查詢日志)。
  • 關鍵內存參數
    SHOW VARIABLES LIKE 'innodb_buffer_pool_size';  -- 12G(配置較低,建議調整為總內存的70%~80%)
    SHOW VARIABLES LIKE 'tmp_table_size';           -- 16M(臨時表內存限制過小)
    
  • 臨時文件路徑/tmp(建議改為專用目錄以避免性能問題)。
2. 內存使用分析
  • 全局內存統計

    SELECT SUM(CAST(replace(current_alloc,'MiB','') AS DECIMAL(10,2))) 
    FROM sys.memory_global_by_current_bytes 
    WHERE current_alloc LIKE '%MiB%';
    

    結果:總內存使用約1933.69MB。

  • 分事件內存占用

    SELECT event_name, sys.format_bytes(CURRENT_NUMBER_OF_BYTES_USED)
    FROM performance_schema.memory_summary_global_by_event_name
    ORDER BY CURRENT_NUMBER_OF_BYTES_USED DESC LIMIT 10;
    

    關鍵發現

    • memory/innodb/buf_buf_pool占用13.29GB(InnoDB緩沖池)。
    • memory/group_rpl/Gcs_xcom::xcom_cache占用1024MB(復制相關緩存)。
  • 用戶級內存統計

    SELECT user, event_name, current_number_of_bytes_used/1024/1024 AS MB_USED
    FROM performance_schema.memory_summary_by_account_by_event_name
    WHERE host <> "localhost"
    ORDER BY MB_USED DESC LIMIT 10;
    

    發現:特定用戶(如zqzh)在memory/temptable/physical_ram中占用65MB。

3. 存儲過程/函數/視圖檢查
  • 存儲過程與函數

    SELECT Routine_schema, Routine_type 
    FROM information_schema.Routines 
    WHERE Routine_schema NOT IN ('mysql','information_schema','performance_schema','sys');
    

    結果:多個業務庫存在大量存儲過程和函數(如bpcbsc等)。

  • 視圖與觸發器

    SELECT TABLE_SCHEMA, COUNT(TABLE_NAME) FROM information_schema.VIEWS;
    SELECT TRIGGER_SCHEMA, COUNT(*) FROM information_schema.triggers;
    

    結果:視圖和觸發器數量較少,非主要內存消耗源。

4. 操作系統級檢查
  • 進程內存占用

    ps -eo user,pid,vsz,rss | grep mysqld
    

    結果mysqld進程虛擬內存(VIRT)96.2G,物理內存(RES)56.5G。

  • 內存映射分析

    pmap -d <mysql_pid> | tail -1
    

    關鍵指標

    • writeable/private:進程實際占用的私有內存(持續增長可能提示內存泄漏)。
  • 透明大頁(THP)檢查

    cat /sys/kernel/mm/transparent_hugepage/enabled
    

    結果:THP處于開啟狀態(可能導致內存分配效率低下)。

三、解決方案

1. 調整MySQL配置
  • 增加InnoDB緩沖池
    innodb_buffer_pool_size = 48G  -- 根據總內存(62G)調整為77%
    
  • 優化臨時表內存
    tmp_table_size = 256M
    max_heap_table_size = 256M
    
2. 關閉透明大頁(THP)
  • 臨時關閉
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    echo never > /sys/kernel/mm/transparent_hugepage/defrag
    
  • 永久關閉
    /etc/rc.local中添加:
    if test -f /sys/kernel/mm/transparent_hugepage/enabled; thenecho never > /sys/kernel/mm/transparent_hugepage/enabled
    fi
    if test -f /sys/kernel/mm/transparent_hugepage/defrag; thenecho never > /sys/kernel/mm/transparent_hugepage/defrag
    fi
    
3. 優化查詢與存儲過程
  • 分析慢查詢:開啟慢查詢日志,定位低效SQL。
  • 減少存儲過程依賴:將復雜邏輯移至應用層,避免存儲過程內存泄漏。
4. 硬件與環境優化
  • 增加物理內存:若業務需求增長,考慮升級服務器內存。
  • 遷移臨時文件目錄:將tmpdir設置為專用高速存儲路徑。

四、總結

  • 核心問題:MySQL內存使用率高主要由InnoDB緩沖池配置不足、THP機制效率低下及存儲過程/函數內存占用引起。
  • 解決重點:調整緩沖池大小、關閉THP、優化查詢邏輯。
  • 后續監控:通過sys.memory_global_by_current_bytespmap持續觀察內存變化。

通過以上步驟,可顯著降低MySQL內存占用并提升穩定性。

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

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

相關文章

華為GaussDB數據庫的手動備份與還原操作介紹

數據庫的備份以A機上的操作為例。 1、使用linux的root用戶登錄到GaussDB服務器。 2、用以下命令切換到 GaussDB 管理員用戶&#xff0c;其中&#xff0c;omm 為當前數據庫的linux賬號。 su - omm 3、執行gs_dump命令進行數據庫備份&#xff1a; 這里使用gs_dump命令進行備…

How to install OpenJ9 JDK 17 on Ubuntu 24.04

概述 OpenJ9 是一款由 IBM 開發并開源的 Java 虛擬機&#xff08;JVM&#xff09;&#xff0c;現由 ?Eclipse 基金會管理&#xff08;名為 ?Eclipse OpenJ9&#xff09;。它旨在提供高性能、低內存消耗和快速啟動時間&#xff0c;特別適用于云原生和容器化環境。 關鍵特性 …

洛谷題單1-P5705 【深基2.例7】數字反轉-python-流程圖重構

題目描述 輸入一個不小于 100 100 100 且小于 1000 1000 1000&#xff0c;同時包括小數點后一位的一個浮點數&#xff0c;例如 123.4 123.4 123.4 &#xff0c;要求把這個數字翻轉過來&#xff0c;變成 4.321 4.321 4.321 并輸出。 輸入格式 一行一個浮點數 輸出格式 …

【云服務器】在Linux CentOS 7上快速搭建我的世界 Minecraft 服務器搭建,并實現遠程聯機,詳細教程

【云服務器】在Linux CentOS 7上快速搭建我的世界 Minecraft 服務器搭建&#xff0c;詳細詳細教程 一、 服務器介紹二、下載 Minecraft 服務端三、安裝 JDK 21四、搭建服務器五、本地測試連接六、添加服務&#xff0c;并設置開機自啟動 前言&#xff1a; 推薦使用云服務器部署&…

內網穿透_ZeroTiers部署_廣和通SC171_aidlux_嵌入式

下載 sudo curl -s https://install.zerotier.com | sudo bash &#xff08;需要科學上網&#xff09; 所有涉及硬件的操作好像都需要 root 權限&#xff0c;curl 在這里需要連接網絡&#xff0c;所以也需要 sudo sudo zerotier-cli status 若返回 200 info 及設備 ID&#xff…

Faster RCNN Pytorch 實現 代碼級 詳解

基本結構&#xff1a; 采用VGG提取特征的Faster RCNN. self.backbone:提取出特征圖->features self.rpn:選出推薦框->proposals self.roi heads:根據proposals在features上進行摳圖->detections features self.backbone(images.tensors)proposals, proposal_losses…

【Matlab】-- 基于MATLAB的美賽常用多種算法

文章目錄 文章目錄 01 內容概要02 各種算法基本原理03 部分代碼04 代碼下載 01 內容概要 本資料集合了多種數學建模和優化算法的常用代碼資源&#xff0c;旨在為參與美國大學生數學建模競賽&#xff08;MCM/ICM&#xff0c;簡稱美賽&#xff09;的參賽者提供實用的編程工具和…

Vue2和Vue3響應式的基本實現

目錄 簡介Vue2 響應式Vue2 響應式的局限性 Vue3 響應式Vue3 響應式的優點 Vue2 和 Vue3 響應式對比 簡介 在 Vue 框架中&#xff0c;數據的響應式是其核心特性之一。當頁面數據發生變化時&#xff0c;我們希望界面能自動更新&#xff0c;而不是手動操作 DOM。這就需要對數據進…

Linux系統中快速安裝docker

1 查看是否安裝docker 要檢查Ubuntu是否安裝了Docker&#xff0c;可以使用以下幾種方法&#xff1a; 方法1&#xff1a;使用 docker --version 命令 docker --version如果Docker已安裝&#xff0c;輸出會顯示Docker的版本信息&#xff0c;例如&#xff1a; Docker version …

ElasticSearch 分詞器

文章目錄 一、安裝中文分詞插件Linux安裝7.14.1版本&#xff1a;測試1&#xff1a;ik_smart測試2&#xff1a;ik_max_word 二、es內置的分詞器&#xff1a;三、拼音插件安裝以及&#xff08;IKpinyin使用&#xff09;配置 IK pinyin 分詞配置 一、安裝中文分詞插件 IK Analys…

arm64位FFmpeg與X264庫

參考鏈接&#xff1a; https://blog.csdn.net/gitblog_09700/article/details/142945092

機器學習與深度學習4:數據集處理Dataset,DataLoader,batch_size

深度學習中&#xff0c;我們能看到別人的代碼中都有一個繼承Dataset類的數據集處理過程&#xff0c;這也是深度學習處理數據集的的基礎&#xff0c;下面介紹這個數據集的定義和使用&#xff1a; 1、數據集加載 1.1 通用的定義 Bach&#xff1a;表示每次喂給模型的數據 Epoc…

MySQL數據庫和表的操作之SQL語句

&#x1f3af; 本文專欄&#xff1a;MySQL深入淺出 &#x1f680; 作者主頁&#xff1a;小度愛學習 MySQL數據庫和表的操作 關系型數據庫&#xff0c;都是遵循SQL語法進行數據查詢和管理的。 SQL語句 什么是sql SQL&#xff1a;結構化查詢語言(Structured Query Language)&…

ubuntu開發mcu環境

# 編輯 vim或者vscode # 編譯 arm-none-eabi # 燒寫 openocd 若是默認安裝&#xff0c;會在/usr/share/openocd/scripts/{interface,target} 有配置接口和目標版配置 示例&#xff1a; openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg 啟動后&#xff0c;會…

Windows模仿Mac大小寫切換, 中英文切換

CapsLock 功能優化腳本部署指南 部署步驟 第一步&#xff1a;安裝 AutoHotkey v2 訪問 AutoHotkey v2 官網下載并安裝最新版本安裝時勾選 "Add Compile Script to context menus" 第二步&#xff1a;部署腳本 直接運行 (調試推薦) 新建文本文件&#xff0c;粘貼…

Selenium Web自動化如何快速又準確的定位元素路徑,強調一遍是元素路徑

如果文章對你有用&#xff0c;請給個贊&#xff01; 匹配的ChromeDriver和瀏覽器版本是更好完成自動化的基礎&#xff0c;可以從這里去下載驅動程序&#xff1a; 最全ChromeDriver下載含win linux mac 最新版本134.0.6998.165 持續更新..._chromedriver 134-CSDN博客 如果你問…

CSRF vs SSRF詳解

一、CSRF&#xff08;跨站請求偽造&#xff09;攻擊全解 攻擊原理示意圖 受害者瀏覽器 ├── 已登錄銀行網站&#xff08;Cookie存活&#xff09; └── 訪問惡意網站執行&#xff1a;<img src"http://bank.com/transfer?tohacker&amount1000000">核心…

Python PDF解析利器:pdfplumber | AI應用開發

Python PDF解析利器&#xff1a;pdfplumber全面指南 1. 簡介與安裝 1.1 pdfplumber概述 pdfplumber是一個Python庫&#xff0c;專門用于從PDF文件中提取文本、表格和其他信息。相比其他PDF處理庫&#xff0c;pdfplumber提供了更直觀的API和更精確的文本定位能力。 主要特點…

niuhe 插件教程 - 配置 MCP讓AI更聰明

niuhe 插件官方教程已經上線, 請訪問: http://niuhe.zuxing.net niuhe 連接 MCP 介紹 API 文檔的未來&#xff1a;MCP&#xff0c;讓協作像聊天一樣簡單. MCP 是 Model Context Protocol(模型上下文協議)的縮寫&#xff0c;是 2024 年 11 月 Claude 的公司 Anthropic 推出并開…

26考研——排序_插入排序(8)

408答疑 文章目錄 二、插入排序基本概念插入排序方法直接插入排序算法描述示例性能分析 折半插入排序改進點算法步驟性能分析 希爾排序相關概念示例分析希爾排序的效率效率分析空間復雜度時間復雜度 九、參考資料鮑魚科技課件26王道考研書 二、插入排序 基本概念 定義&#x…