十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
查看方式:
1、sysctl -a
2、cat /proc/sys/vm/overcommit_memory
一、overcommit_memory
內(nèi)核源碼中的介紹:
This value contains a flag that enables memory overcommitment.
When this flag is 0, the kernel attempts to estimate(估算) the amount
of free memory left when userspace requests more memory.
When this flag is 1, the kernel pretends there is always enough
memory until it actually runs out.
When this flag is 2, the kernel uses a "never overcommit"
policy that attempts to prevent any overcommit of memory.
This feature can be very useful because there are a lot of
programs that malloc() huge amounts of memory "just-in-case"
and don't use much of it.
The default value is 0.
文件指定了內(nèi)核針對內(nèi)存分配的策略,其值可以是0、1、2
0: (默認(rèn))表示內(nèi)核將檢查是否有足夠的可用內(nèi)存供應(yīng)用進(jìn)程使用;如果有足夠的可用內(nèi)存,內(nèi)存申請允許;否則,內(nèi)存申請失敗,并把錯誤返回給應(yīng)用進(jìn)程。0 即是啟發(fā)式的overcommitting handle,會盡量減少swap的使用,root可以分配比一般用戶略多的內(nèi)存
1: 表示內(nèi)核允許分配所有的物理內(nèi)存,而不管當(dāng)前的內(nèi)存狀態(tài)如何,允許超過CommitLimit,直至內(nèi)存用完為止。在數(shù)據(jù)庫服務(wù)器上不建議設(shè)置為1,從而盡量避免使用swap.
2: 表示不允許超過CommitLimit值
二、vm.overcommit_ratio
默認(rèn)值為:50 (即50%)
這個參數(shù)值只有在vm.overcommit_memory=2的情況下,這個參數(shù)才會生效。
執(zhí)行g(shù)rep -i commit /proc/meminfo
看到CommitLimit和Committed_As參數(shù)。
CommitLimit是一個內(nèi)存分配上限,CommitLimit = 物理內(nèi)存 * overcommit_ratio(默認(rèn)50,即50%) + swap大小
Committed_As是已經(jīng)分配的內(nèi)存大小。
一般情況:
情況①
overcomot_memory = 0,vm.overcommit_ratio = 50 -----> max_num malloc size = 7.137890GB
情況②
overcomot_memory = 2 ,vm.overcommit_ratio = 50 -----> max_num malloc size = 3.958923GB
情況③
overcomot_memory = 2 ,vm.overcommit_ratio = 99 -----> max_nummalloc size = 6.722099 GB
三、vm.min_free_kbytes
cat /proc/sys/vm/min_free_kbytes centos6.4默認(rèn)66M
67584
該文件表示強制Linux VM最低保留多少空閑內(nèi)存(Kbytes)。
當(dāng)可用內(nèi)存低于這個參數(shù)時,系統(tǒng)開始回收cache內(nèi)存,以釋放內(nèi)存,直到可用內(nèi)存大于這個值。
vm.vfs_cache_pressure
該項表示內(nèi)核回收用于directory和inode cache內(nèi)存的傾向:
缺省值100表示內(nèi)核將根據(jù)pagecache和swapcache,把directory和inode cache保持在一個合理的百分比
降低該值低于100,將導(dǎo)致內(nèi)核傾向于保留directory和inode cache
增加該值超過100,將導(dǎo)致內(nèi)核傾向于回收directory和inode cache。
vm.dirty_background_ratio默認(rèn)為10
所有全局系統(tǒng)進(jìn)程的臟頁數(shù)量達(dá)到系統(tǒng)總內(nèi)存的多大比例后,就會觸發(fā)pdflush/flush/kdmflush等后臺回寫進(jìn)程運行。
將vm.dirty_background_ratio設(shè)置為5-10,將vm.dirty_ratio設(shè)置為它的兩倍左右,以確保能持續(xù)將臟數(shù)據(jù)刷新到磁盤,避免瞬間I/O寫,產(chǎn)生嚴(yán)重等待(和MySQL中的innodb_max_dirty_pages_pct類似)
vm.dirty_ratio默認(rèn)為20
單個進(jìn)程的臟頁數(shù)量達(dá)到系統(tǒng)總內(nèi)存的多大比例后,就會觸發(fā)pdflush/flush/kdmflush等后臺回寫進(jìn)程運行。
vm.panic_on_oom 默認(rèn)為0開啟 為1時表示關(guān)閉此功能
等于0時,表示當(dāng)內(nèi)存耗盡時,內(nèi)核會觸發(fā)OOM~~~~ killer殺掉最耗內(nèi)存的進(jìn)程。
當(dāng)OOM Killer被啟動時,通過觀察進(jìn)程自動計算得出各當(dāng)前進(jìn)程的得分 /proc/
而且計算分值時主要參照 /proc/
/proc/[pid]/oom_adj ,該pid進(jìn)程被oom killer殺掉的權(quán)重,介于 [-17,15]之間,越高的權(quán)重,意味著更可能被oom killer選中,-17表示禁止被kill掉。
/proc/[pid]/oom_score,當(dāng)前該pid進(jìn)程的被kill的分?jǐn)?shù),越高的分?jǐn)?shù)意味著越可能被kill,這個數(shù)值是根據(jù)oom_adj運算后的結(jié)果,是oom_killer的主要參考。
sysctl 下有2個可配置選項:
vm.panic_on_oom = 0 #內(nèi)存不夠時內(nèi)核是否直接panic
vm.oom_kill_allocating_task = 1 #oom-killer是否選擇當(dāng)前正在申請內(nèi)存的進(jìn)程進(jìn)行kill
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。