Mysql

MariaDB 記憶體使用量超過配置大小

  • June 11, 2020

我注意到我跟踪到 MariaDB 的系統記憶體使用百分比(由 sar 報告)穩步增加。這似乎與數據庫負載無關:這種增加與查詢數量的增加不匹配。

記憶體使用圖

我有以下尺寸配置:

key_buffer_size         =  400000000                                                                                  
innodb_buffer_pool_size = 1210612736 

總共有 1.5GB,但現在在 RSS 記憶體上已達到 2.3GB。

為什麼越來越貪心?我可以讓它更好地堅持它的極限嗎?或者它可能堅持 InnoDB 的限制,但正在將記憶體用於其他用途,如果是這樣,有沒有辦法理解這一點,以便我可以調整配置以將總記憶體使用量保持在一定水平?或者它可能就像 Linux 核心一樣,只是在空閒時使用所有空閒記憶體進行記憶體,但在需要時很樂意放棄它?

我在 Debian 10 (Buster) 上使用 MariaDB 10.3.22。工作負載是一個網路伺服器(所以我需要為其他程序保留一些記憶體:nginx+php)。如果需要,很高興發布更多配置。

您列出的記憶體設置是共享的。每個執行緒還分配了各種緩衝區。這是 MySQL 記憶體計算器的連結:

https://www.mysqlcalculator.com/

由於 Gordon 的回答和其中的連結,由於論壇的功勞,以下命令將告訴您 MySQL/MariaDB 數據庫需要多少:

SELECT ROUND(
   ( @@GLOBAL.key_buffer_size                     
    + @@GLOBAL.query_cache_size 
    + @@GLOBAL.tmp_table_size 
    + @@GLOBAL.innodb_buffer_pool_size 
    + @@GLOBAL.innodb_log_buffer_size 
    + @@GLOBAL.max_connections * ( 
        @@GLOBAL.sort_buffer_size
      + @@GLOBAL.read_buffer_size 
      + @@GLOBAL.read_rnd_buffer_size 
      + @@GLOBAL.join_buffer_size 
      + @@GLOBAL.thread_stack 
      + @@GLOBAL.binlog_cache_size)
   ) / 1024 / 1024, 1) `total MB`;

(我是 OP,這提供了 2.9GB 作為我的總配置使用量 - 是時候降低一些數字了!)

引用自:https://serverfault.com/questions/1020811