内存优化的手段

服务器物理内存足够大时,直接禁用swap,如果实在需要用到swap,可以降低swappines的值,降低内存回收时swap的使用倾向

调低核心应用的/proc/pid/oom_score_adj参数值,即使内存紧张,核心应用也不会被OOM 杀死

使用大量内存的服务建议配置大页内存,减少内存映射页表的条目数,降低内存消耗,典型的服务如oracle

使用cgroups 限制进程的内存使用情况,避免系统内存被有缺陷的异常进程耗尽

相关内核参数 选项 默认值 描述 /proc/sys/vm/dirty_background_bytes 0 触发pdflush后台回写的脏内存大小

/proc/sys/vm/dirty_background_ratio 10 触发pdflush后台回写的脏内存百分比

/proc/sys/vm/dirty_bytes 0 触发一个写入进程后台回写的脏内存大小

/proc/sys/vm/dirty_ratio 10 触发一个写入进程后台回写的脏内存比例

/proc/sys/vm/dirty_expire_centisecs 3000 pdflush后台写入脏内存的最小时间

/proc/sys/vm/dirty_writeback_centisecs 500 pdflush活跃时间间隔(0为停用)

/proc/sys/vm/min_free_kbytes 内核动态计算内存回收空闲内存最小值

/proc/sys/vm/overcommit_memory 0 0允许利用算法合理的过度分配,1值允许过度分配,2禁止过度分配

/proc/sys/vm/overcommit_ratio 过度分配的比例

/proc/sys/vm/swappiness 30 回收匿名页的倾向,可以理解为使用swap的倾向

/proc/sys/vm/vfs_cache_pressure 100 回收文件系统目录项缓存和索引节点缓存的倾向,0为不回收。减少vfs_cache_pressure会导致内核倾向于保留dentry和inode缓存。而增加vfs_cache_pressure超过100时,则会导致内核倾向于重新声明dentries和inodes,简而言之,小于100的值不会导致缓存的大量减少。超过100的值则会告诉内核你希望以高优先级来清理缓存。其实,无论你采用什么值,内核清理缓存的速度都是比较低的。如果将此值设置为10000,系统将会将缓存减少到一个合理的水平。

/proc/sys/vm/drop_caches 0 1释放页缓存cache,2释放索引节点和目录项缓存,3释放页缓存及索引节点和目录项缓存