1. 程式人生 > >MySQL伺服器發生OOM的案例分析

MySQL伺服器發生OOM的案例分析

【問題】

有一臺MySQL5.6.21的伺服器發生OOM,分析下來與多種因素有關

【分析過程】

1伺服器實體記憶體相對熱點資料檔案偏小,62G實體記憶體+8G的SWAP,資料檔案大小約550G

 觸發OOM是binlog備份的cp程序

2、mysqld實際使用實體記憶體遠大於innodb_buffer_pool_size設定,與我們之前分析的記憶體分配管理模組有關,建議更換為jemalloc

<1>這個MySQL例項配置了45G的buffer pool,發生OOM時,mysqld程序實際使用到約61G

 

<2>另一臺相同配置的伺服器,配了32G的buffer pool,MySQL實體記憶體用到了57G,SWAP已使用5G

3、NUMA節點記憶體分配不均導致了SWAP空間大量使用,下圖是這臺伺服器mysqld程序在各NUMA節點的記憶體使用情況,建議開啟numa interleave訪問

 

【優化方案】

1、 升級記憶體更大的伺服器

2、 建議更換mysqld程序的記憶體分配管理模組為jemalloc

3、 建議開啟mysql程序的numa  interleave訪問

開啟numa  interleave的步驟,可以參考文章