Linux中如何避免buffers/cached占用過多內存


轉載自:https://www.cnblogs.com/panfeng412/p/drop-caches-under-linux-system-2.html

 https://www.cnblogs.com/argv/p/13178269.html

[centos 7中,已經沒有extra_free_kbytes參數,直接調整min_free_kbytes就好了]

 

服務器在使用過程,發現沒幾個服務,但是內存的free卻幾近耗盡

當有請求需要申請大內存的時候,有時會出現失敗的情況

分析內存的占用中,buffers/cached占用了接近70%,而網上一些資料都是簡單的一個處理drop_caches清空就了事

實際服務器過程中,諸多因素決定這個操作不適用,因此考慮了解Linux自動回收的機制

先是了解了vfs_cache_pressure,但是參數的調整只是覺得優先保存哪部分的緩存而已,實際沒有涉及到觸發閥值的設置

后了解到extra_free_kbytes的參數設定,沒有時間詳細查看Linux的內核源碼以了解詳細機制,在網上找到了上述的文章中,也碰到了同樣的需求

寫的很詳細,實測有效,收錄起來。

 

1. 首先,grep low /proc/zoneinfo,得到如下結果:

        low      1
        low      380
        low      12067

2. 將以上3列加起來,乘以4KB,就是這個閾值,通過這個方法計算后發現當前服務器的回收閾值只有48MB,因此很難看到這一現象,實際中可能等不到回收,操作系統就會hang住沒響應了。

3. 可以通過以下方法調大這個閾值:將vm.extra_free_kbytes設置為vm.min_free_kbytes和一樣大,則/proc/zoneinfo中對應的low閾值就會增大一倍,同時high閾值也會隨之增長,以此類推。

$ sudo sysctl -a | grep free_kbytes       
vm.min_free_kbytes = 39847
vm.extra_free_kbytes = 0
$ sudo sysctl -w vm.extra_free_kbytes=836787 ######1GB

 

n   [en]   詳細 X
基本翻譯
n. 英語字母的第十四個字母
網絡釋義
n-hexane: 正己烷
諾基亞N: NOKIA
N,N-二甲基苯胺: N,N-Dimethylaniline


免責聲明!

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



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