python日志输出 超量 停止_linux 内存分配参数导致的 buffer_pool 分配不出来的问题排查...
linux 內(nèi)存分配參數(shù)導(dǎo)致的 buffer_pool 分配不出來的問題排查:
參考:http://blog.csdn.net/jollyjumper/article/details/24127009
原文:http://www.cnblogs.com/gomysql/p/6130405.html
vm.overcommit_memory
默認(rèn)值為:0
從內(nèi)核文檔里得知,該參數(shù)有三個(gè)值,分別是:
0:當(dāng)用戶空間請(qǐng)求更多的的內(nèi)存時(shí),內(nèi)核嘗試估算出剩余可用的內(nèi)存。
1:當(dāng)設(shè)這個(gè)參數(shù)值為1時(shí),內(nèi)核允許超量使用內(nèi)存直到用完為止,主要用于科學(xué)計(jì)算.
2:當(dāng)設(shè)這個(gè)參數(shù)值為2時(shí),內(nèi)核會(huì)使用一個(gè)決不過量使用內(nèi)存的算法,即系統(tǒng)整個(gè)內(nèi)存地址空間不能超過swap+50%的RAM值,50%參數(shù)的設(shè)定是在overcommit_ratio中設(shè)定。
vm.overcommit_ratio
默認(rèn)值為:50
這個(gè)參數(shù)值只有在vm.overcommit_memory=2的情況下,這個(gè)參數(shù)才會(huì)生效?!臼褂?cat /proc/sys/vm/overcommit_ratio 查看】
那么我們來看一下總的內(nèi)存地址不能超過多少。其實(shí)是可以直接查看的。
[root@yayundeng 3306]# cat /proc/meminfo |grep -i commit
CommitLimit: ? ?70144396 kB ?最大可用虛擬內(nèi)存【就是說mysql的buffer_pool 最大差不多能分配這么多kB的內(nèi)存空間】
Committed_AS: ? ? 135196 kB ?已使用虛擬內(nèi)存
通過查看可以得知在70G的樣子。那么這個(gè)是如何計(jì)算的呢。
具體的70GB的計(jì)算方法如下:
最大可分配的虛擬內(nèi)存(CommitLimit) = 總物理內(nèi)存(MemTotal) × 百分比(vm.overcommit_ratio) + 交換分區(qū)大小(Swap)
對(duì)于我們上面這個(gè)環(huán)境來說,就是下面這個(gè)樣子:
[root@yayundeng 3306]# cat /proc/meminfo | grep MemTotal
MemTotal: ? ? ? 132096808 kB ?總物理內(nèi)存
[root@yayundeng 3306]# free -k
total ? ? ? used ? ? ? free ? ? shared ? ?buffers ? ? cached
Mem: ? ? 132096808 ? ?1583944 ?130512864 ? ? ? ? ?0 ? ? ?10240 ? ? 133220
-/+ buffers/cache: ? ?1440484 ?130656324
Swap: ? ? ?4095992 ? ? ? ? ?0 ? ?4095992
[root@yayundeng 3306]# cat /proc/sys/vm/overcommit_ratio
50
最大可分配的虛擬內(nèi)存 = 132096808*50% + 4095992 = 70144396 kB 差不多在70GB ,穩(wěn)妥的話,設(shè)置60GB的buffer_pool即可。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的python日志输出 超量 停止_linux 内存分配参数导致的 buffer_pool 分配不出来的问题排查...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 国家社科基金项目清单、申报书填写指南和课
- 下一篇: linux 其他常用命令