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


【問題】

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

【分析過程】

1服務器物理內存相對熱點數據文件偏小,62G物理內存+8G的SWAP,數據文件大小約550G

 觸發OOM是binlog備份的cp進程

2、mysqld實際使用物理內存遠大於innodb_buffer_pool_size設置,與我們之前分析的內存分配管理模塊有關,建議更換為jemalloc

可以參考我之前的文章,MySQL5.7.18(ptmalloc VS tcmalloc VS 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的步驟,可以參考文章

NUMA導致的MySQL服務器SWAP問題分析與解決方案

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM