技術分享 | MySQL內存使用率高問題排查

本文為墨天輪數據庫管理服務團隊第51期技術分享,內容原創,如需轉載請聯系小墨(VX:modb666)并注明來源。

一、問題現象

問題實例mysql進程實際內存使用率過高

二、問題排查

2.1 參數檢查

mysql版本 :8.0.39,慢日志沒有開啟,innodb\_buffer\_pool\_size 12G(機器內存62G,相對配置較低),臨時文件在/tmp目錄下

2.2 檢查內存使用

 SELECT @@key_buffer_size,@@innodb_buffer_pool_size ,@@innodb_log_buffer_size ,@@tmp_table_size ,@@read_buffer_size,@@sort_buffer_size,@@join_buffer_size ,@@read_rnd_buffer_size,@@binlog_cache_size,@@thread_stack,(SELECT COUNT(host) FROM  information_schema.processlist where command<>'Sleep')\G;

2.3 存儲過程、函數、視圖

-- 存儲過程、函數
SELECT  Routine_schema, Routine_type
FROM information_schema.Routines
WHERE  Routine_schema not in ('mysql','information_schema','performance_schema','sys')
GROUP BY Routine_schema, Routine_type; 
-- 視圖
SELECT  TABLE_SCHEMA , COUNT(TABLE_NAME) 
FROM information_schema.VIEWS
WHERE TABLE_SCHEMA not in ('mysql','information_schema','performance_schema','sys')
GROUP BY TABLE_SCHEMA ;
-- 觸發器
SELECT TRIGGER_SCHEMA, count(*) FROM information_schema.triggers 
WHERE  TRIGGER_SCHEMA not in ('mysql','information_schema','performance_schema','sys')
GROUP BY TRIGGER_SCHEMA;

2.4 排查實際占用

1、總內存使用

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

2、分事件統計內存

 SELECT event_name,SUM(CAST(replace(current_alloc,'MiB','')  as DECIMAL(10, 2))  )FROM sys.memory_global_by_current_bytesWHERE current_alloc like '%MiB%' GROUP BY event_name  ORDER BY SUM(CAST(replace(current_alloc,'MiB','')  as DECIMAL(10, 2))  ) DESC ;
mysql> 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;

3、賬號級別統計

sELECT user,event_name,current_number_of_bytes_used/1024/1024 as MB_CURRENTLY_USED
FROM performance_schema.memory_summary_by_account_by_event_name
WHERE host<>"localhost"
ORDER BY  current_number_of_bytes_used DESC LIMIT 10;

2.4 操作系統排查

1、top shift+m

2、ps命令 mysql相關進程使用內存情況

ps eo user,pid,vsz,rss $(pgrep -f 'mysqld')

3、pmap 命令

while true; do pmap -d 3020273 | tail -1; sleep 2; done

pmap -X -p 3020273 > /tmp/memmysql.txt

RSS 就是這個process 實際占用的物理內存。 Dirty: 臟頁的字節數(包括共享和私有的)。 Mapping: 占用內存的文件、或[anon](分配的內存)、或[stack](堆棧)。 writeable/private 表示進程所占用的私有地址空間大小,也就是該進程實際使用的內存大小。

(1)首先使用/top/free/ps在系統級確定是否有內存泄露。如有,可以從top輸出確定哪一個process。 (2)pmap工具是能幫助確定process是否有memory leak。確定memory leak的原則: writeable/private (‘pmap –d’輸出)如果在做重復的操作過程中一直保持穩定增長,那么一定有內存泄露。

4、檢查大頁配置

三、解決方案

1)臨時關閉:

echo never >> /sys/kernel/mm/transparent_hugepage/enabled
echo never >> /sys/kernel/mm/transparent_hugepage/defrag

2)永久關閉,下一次重啟后生效:

在 /etc/rc.local 文件中加入如下內容:

#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag

墨天輪從樂知樂享的數據庫技術社區蓄勢出發,全面升級,提供多類型數據庫管理服務。墨天輪數據庫管理服務旨在為用戶構建信賴可托付的數據庫環境,并為數據庫廠商提供中立的生態支持。

服務官網:https://www.modb.pro/service

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

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

相關文章

[AI速讀]混合語言IP集成:挑戰與高效解決方案

在現代SoC(系統級芯片)設計中,IP(知識產權模塊)復用是提升開發效率的關鍵。然而,當設計涉及多種硬件描述語言(如SystemVerilog、VHDL、SystemC)時,如何高效集成不同語言的IP模塊成為一大難題。本文將從實際設計場景出發,探討混合語言IP集成的核心挑戰,并介紹一套方法…

【vulhub/wordpress靶場】------獲取webshell

1.進入靶場環境&#xff1a; 輸入&#xff1a;cd / vulhub / wordpress / pwnscriptum 修改版本號&#xff1a; vim docker-compose.yml version: 3 保存退出 開啟靶場環境&#xff1a; docker - compose up - d 開啟成功&#xff0c;docker ps查看端口 靶場環境80…

微信小程序:用戶拒絕小程序獲取當前位置后的處理辦法

【1】問題描述&#xff1a; 小程序在調用 wx.getLocation() 獲取用地理位置時&#xff0c;如果用戶選擇拒絕授權&#xff0c;代碼會直接拋出錯誤。如果再次調用 wx.getLocation() 時&#xff0c;就不會在彈窗詢問用戶是否允許授權。導致用戶想要重新允許獲取地理位置時&#x…

NLP 與常見的nlp應用

自然語言處理&#xff08;NLP&#xff09;是一個廣泛的領域&#xff0c;它不僅包括自然語言理解&#xff08;NLU&#xff09;&#xff0c;還涉及一系列其他任務和子領域。以下是NLP領域中的主要組成部分及其相關任務&#xff1a; 1. 自然語言理解&#xff08;NLU&#xff09; …

全網首創/純Qt/C++實現國標GB28181服務/實時視頻/云臺控制/預置位/錄像回放和下載/事件訂閱/語音對講

一、前言說明 用純Qt來實現這個GB28181的想法很久了&#xff0c;具體可以追溯到2014年&#xff0c;一晃十年都過去了&#xff0c;總算是整體的框架和邏輯都打通了&#xff0c;總歸還是雜七雜八的事情多&#xff0c;無法靜下心來研究具體的協議&#xff0c;最開始初步了解協議后…

Django+celery+flower

Djangoceleryflower Django的定時任務及可視化監控Django Django的定時任務及可視化監控 Django的定時任務&#xff0c;以及可視化監控。 Django Django&#xff1b; 首先在python中新建虛擬環境并激活 pip install virtualenv python -m venv venv source venv/bin/activa…

Python 編程題 第十一節:選擇排序、插入排序、刪除字符、目標移動、尾部的0

選擇排序 假定第一個為最小的為已排序序列&#xff0c;與后面的比較&#xff0c;找到未排序序列中最小的后&#xff0c;交換位置&#xff0c;獲得最小元素&#xff0c;依次往后 lst[1,14,25,31,21,13,6,8,14,9,7] def selection_sort(lst):for i in range(len(lst)):min_inde…

組態王Kingview配置為OPCUA服務器的一些問題處理

一、問題描述 1、組態王【運行配置】界面沒有【服務配置】的選項&#xff0c;無法將組態王Kingview配置為OPCUA服務器&#xff1b; 2、點擊組態王【運行配置界面】的【服務配置】選項彈窗警告提示【試圖執行的操作不受支持】&#xff0c;如下圖所示&#xff1a; 二、問題分析 …

模塊二 單元4 安裝AD+DC

模塊二 單元4 安裝ADDC 兩個任務&#xff1a; 1.安裝AD活動目錄 2.升級當前服務器為DC域控制器 安裝前的準備工作&#xff1a; 確定你要操作的服務器系統&#xff08;Windows server 2022&#xff09;&#xff1b; 之前的服務器系統默認是工作組的模式workgroup模式&#xff08…

git clone項目報錯fatal: fetch-pack: invalid index-pack output問題

前情回顧&#xff1a;git項目放在公司服務器上面&#xff0c;克隆等操作需要連接VPN才能操作。由于項目比較大&#xff0c;網速比較慢&#xff0c;克隆項目經常出現fetch-pack: invalid index-pack output。在網上查找各種解決方法。也就這一種有點效果。僅供參考&#xff0c;不…

前端Tailwind CSS面試題及參考答案

解釋 Tailwind CSS 中 w-1/2 和 max-w-md 的區別及適用場景 在 Tailwind CSS 里&#xff0c;w-1/2 和 max-w-md 屬于不同類型的寬度控制類&#xff0c;它們的功能和適用場景存在明顯差異。 w-1/2 是用來設定元素寬度的類。它把元素寬度設定為其父元素寬度的一半。例如&#xff…

《深度剖析:BERT與GPT——自然語言處理架構的璀璨雙星》

在自然語言處理&#xff08;NLP&#xff09;的廣袤星空中&#xff0c;BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;與GPT&#xff08;Generative Pretrained Transformer&#xff09;系列模型宛如兩顆最為耀眼的星辰&#xff0c;引領…

VMware主機換到高配電腦,高版本系統的問題

原來主機是i3 ,windows7系統&#xff0c;vmware 14.0,虛機系統是ubuntu 14.04。目標新機是i7 14700KF,windows11系統。原以為安裝虛擬機&#xff0c;將磁盤文件&#xff0c;虛擬機配置文件拷貝過去可以直接用。 新目標主機先安裝了vmware 15&#xff0c;運行原理虛機&#xff0…

后端框架模塊化

后端框架的模塊化設計旨在簡化開發流程、提高可維護性&#xff0c;并通過分層解耦降低復雜性。以下是常見的后端模塊及其在不同語言&#xff08;Node.js、Java、Python&#xff09;中的實現方式&#xff1a; 目錄 1. 路由&#xff08;Routing&#xff09;2. 中間件&#xff08;…

MDG實現BP客商復雜邏輯校驗的方法

引言 項目中可能常用的增強點是USMD_RULE_SERVICE來實現復雜的校驗邏輯&#xff0c;除此之外&#xff0c;SAP對BP主數據還提供了以下的實現方式。 方法1-替換ERP校驗類 眾所周知&#xff0c;BP存在復雜的ERP校驗&#xff0c;主要通過類CL_MDG_BS_FND_BP_CHECK&#xff08;子…

基于springboot的教務系統(源碼+lw+部署文檔+講解),源碼可白嫖!

摘要 這些年隨著Internet的迅速發展&#xff0c;我們國家和世界都已經進入了互聯網大數據時代&#xff0c;計算機網絡已經成為了整個社會以及經濟發展的巨大動能&#xff0c;各個高校的教務工作成為了學校管理事務的重要目標和任務&#xff0c;因此運用互聯網技術來提高教務的…

TDengine 中的流式計算

簡介 TDengine 中的流計算&#xff0c;功能相當于簡化版的 FLINK &#xff0c; 具有實時計算&#xff0c;計算結果可以輸出到超級表中存儲&#xff0c;同時也可用于窗口預計算&#xff0c;加快查詢速度。 創建流式計算 CREATE STREAM [IF NOT EXISTS] stream_name [stream_o…

代碼隨想錄day23 回溯part2

39.組合總和 給你一個 無重復元素 的整數數組 candidates 和一個目標整數 target &#xff0c;找出 candidates 中可以使數字和為目標數 target 的 所有 不同組合 &#xff0c;并以列表形式返回。你可以按 任意順序 返回這些組合。 candidates 中的 同一個 數字可以 無限制重…

回調函數中 qsort 函數的使用

目錄 一.冒泡排序 二.指針類型 void* 三. qsort 1.簡介 2.研究函數參數 3.怎么用&#xff1f; (1)排數組&#xff0c;升序 (2)排序結構體 四.用冒泡排序思想&#xff0c;模擬實現 qsort (可排序任意類型數據) 1.函數參數設計 2.在 if (cmp( )>0) 怎么傳參&#x…

電機控制常見面試問題(十四)

文章目錄 一.電機信噪比二.電機零點偏移校正和極對數自適應1.零點偏移量檢測?2. 極對數識別三.交流電機電流紋波怎么產生的1.電源相關因素2.電機本體特性3.?PWM逆變器諧波4.負載與環境干擾5.診斷流程建議 四.談談對諧波的理解1.諧波定義2.次諧波產生源3.次諧波的檢測與分析4.…