MYSQL,innodb_buffer_pool_size記憶體配置

來源:互聯網
上載者:User

標籤:

為MYSQL。innodb_buffer_pool_size=8G。MySQL一起動就會將佔用掉8G記憶體(覺得TOP能夠看到記憶體被使用了8G),可是近期才細緻研究一下。原來不是這種(可能自己對Linux malloc記憶體配置也僅僅是知道了個皮毛吧)。MySQL啟動時實際僅僅是在虛擬記憶體中分配了地址空間,而並沒有真正的映射到實體記憶體上。

由於malloc分配記憶體是先在虛擬記憶體中分配地址的,到實際使用時才真正的映射到實體記憶體

因此這個地方。假設因為機器記憶體使用量不當。到了MySQL真正要映射實體記憶體時。假設實體記憶體不足了。就會出錯甚至退出。


可是這裡也有個非常奇異的地方就是Linux下的OOM Killer:

假如我一個程式A已經執行,而且分配了22G記憶體(機器配置是實體記憶體16G+SWAP 8G),可是沒有真正的映射到實體記憶體;

這時MySQL啟動,innodb_buffer_pool_size=8G,啟動正常。

然後程式A開始實際分配實體記憶體。一下子僅僅剩下2G SWAP記憶體了。

這時MYSQL也開始實際使用記憶體,由於僅僅有2G SWAP,所以效能非常差。再超過2G時,記憶體耗盡,這時OOM Killer開始殺進程,怎麼殺呢,誰佔用記憶體多殺誰,於是將進程A殺掉了,記憶體一下子回來了,MySQL不會退出;

可是一般系統中MySQL都是分配記憶體最大的,所以常常性的是MySQL被殺掉。


Linux OOM Killer可參見:理解和配置 Linux 在下面 OOM Killer

著作權聲明:本文博主原創文章,部落格,未經同意不得轉載。

MYSQL,innodb_buffer_pool_size記憶體配置

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.