Centos7 因內存 可用大小不足,被killed的解決辦法


Linux的內存分配采取的是一種更加積極的分配策略,它假設應用申請了內存空間后並不會立即去使用它,所以允許一定量的超售,當應用真的需要使用它的時候,操作系統可能已經通過回收了其他應用的內存空間而變得有能力去滿足這個應用的需求,簡單的說,就是允許應用申請比實際可分配空間(包括物理內存和Swap)更多的內存,這個特性稱為OverCommit。

這個特性在Linux操作系統里面也是可配的,可以通過設置/proc/sys/vm/overcommit_memory為不同的值來調整OverCommit策略。

overcommit_memory可以取3個值:

0:默認值,由Linux內核通過一些啟發式算法來決定是否超售和超售的大小,一般允許輕微的超售,拒絕一些明顯不可能提供的請求,同時做一些規則限制,比如不同用戶overcommit的大小也不一樣。

1:允許,不做限制的超售,當然這個也不是無限大,還受到尋址空間的限制,32位系統最大可能只有4G,64位系統大概16T左右。

2:禁止,禁止超售,系統能夠分配的內存不會超過swap+實際物理內存*overcommit_ratio,該值可以通過/proc/sys/vm/overcommit_ratio設置,默認50%。

 

如何修改該參數:

編輯 /etc/sysctl.conf                                                                                                                                                                                                                                           添加 vm.overcommit_memory=1   

或者 sysctl vm.overcommit_memory=1   

或者 echo 1 > /proc/sys/vm/overcommit_memory        

以上動作完成后,  使用  sysctl -p 使新的參數生效。


免責聲明!

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



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