CentOS Swap空间回收策略概述
CentOS系统中,Swap空间回收策略主要围绕参数调优(控制Swap使用倾向、缓存回收效率、内存回收阈值等)和主动清理(清除Swap中无用数据)两类方式实现,旨在平衡内存与Swap的使用效率,提升系统性能。
vm.swappinessvm.swappiness参数(范围0-100)决定了系统使用Swap空间的倾向:值越高,系统越倾向于将内存数据换出到Swap;值越低,越倾向于保留内存数据。
sysctl vm.swappiness(默认通常为60)。sysctl vm.swappiness=10(推荐生产环境设置为10-30,减少Swap依赖)。vm.swappiness=10追加到/etc/sysctl.conf文件,执行sysctl -p使配置生效。vm.vfs_cache_pressurevm.vfs_cache_pressure(范围0-100)控制内核回收用于目录和inode缓存的内存的倾向:值越高,回收越积极(释放更多内存给应用)。
sysctl vm.vfs_cache_pressure(默认通常为100)。sysctl vm.vfs_cache_pressure=50,并追加到/etc/sysctl.conf永久生效。vm.min_free_kbytesvm.min_free_kbytes定义了系统必须保留的最小空闲内存量(单位:KB),用于避免内存耗尽导致OOM(Out of Memory)。
sysctl vm.min_free_kbytes。sysctl -p生效。vm.dirty_ratio与vm.dirty_background_ratiovm.dirty_ratio:脏页(已修改但未写入磁盘的内存页)占物理内存的比例阈值(默认20%),超过该值系统会同步写回脏页(阻塞进程)。vm.dirty_background_ratio:脏页占比的后台写回阈值(默认10%),超过该值系统会在后台异步写回脏页(不阻塞进程)。vm.dirty_ratio=40、vm.dirty_background_ratio=10,避免大量脏页占用内存导致Swap被提前使用。设置后执行sysctl -p生效。sudo swapon --show(查看Swap分区/文件列表)或free -h(查看总Swap使用量),确认需要清理的目标Swap。free -h查看),避免清理后内存不足导致进程崩溃。使用swapoff命令禁用目标Swap(若Swap为分区,替换为设备名如/dev/sda2;若为文件,替换为文件路径如/swapfile):
sudo swapoff /dev/sdXn 或 sudo swapoff /swapfile。
sudo swapon /dev/sdXn 或 sudo swapon /swapfile。dd命令向Swap文件写入零(需根据Swap大小调整count参数,如1GB Swap用count=1024):sudo dd if=/dev/zero of=/swapfile bs=1M count=1024。再次执行sudo swapon --show或free -h,确认Swap使用量已重置(如从1GB降至0)。
watch -n 60 free -h(每60秒刷新)或cron任务(如每小时记录到日志)监控Swap使用情况,及时发现异常。