背景:某CentOS 7服务器因业务增长,物理内存(8GB)频繁接近饱和,系统响应速度下降,需扩展虚拟内存。
解决步骤:
swapon --show确认系统无Swap空间;dd if=/dev/zero of=/swapfile bs=1M count=8192创建8GB Swap文件(8GB物理内存建议Swap大小为8GB,符合“内存1倍”规则);chmod 600 /swapfile(设置安全权限)、mkswap /swapfile(格式化为Swap格式)、swapon /swapfile(立即启用);/etc/fstab,添加/swapfile swap swap defaults 0 0,确保重启后自动挂载。free -h显示Swap已启用,top命令监控到内存使用率从90%降至70%,响应速度恢复。背景:某企业CentOS 8服务器运行Java应用,物理内存充足(16GB),但系统仍频繁使用Swap,导致磁盘I/O升高(iostat显示swap读写速率达10MB/s),性能下降。
原因分析:cat /proc/sys/vm/swappiness显示值为60(默认),系统过度依赖Swap,即使物理内存充足也会交换数据。
优化步骤:
sysctl vm.swappiness=10,将Swap依赖降低至10(推荐范围10-30,适用于内存充足场景);/etc/sysctl.conf,添加vm.swappiness=10,运行sysctl -p使配置生效。vmstat 1监控到swap读写速率降至0.5MB/s以下,磁盘I/O负载下降80%,Java应用响应时间从2s缩短至0.5s。背景:某CentOS 7 Web服务器突然出现响应停滞,top命令显示系统负载高达20,free -h显示Swap使用率达95%,iostat显示磁盘写入速率达50MB/s。
原因分析:
top按Shift+M排序,发现Nginx进程占用内存达6GB(物理内存8GB),导致系统触发Swap;cat /proc/sys/vm/swappiness显示值为60,系统过度交换。swapoff /swapfile(关闭Swap)、swapon /swapfile(重新启用),释放Swap空间;sysctl vm.swappiness=10,降低Swap依赖;worker_processes为2(匹配CPU核心数),限制worker_connections为1024,减少内存占用。背景:某CentOS 8 Kubernetes集群节点运行多个Python数据处理容器,某容器因内存泄漏导致内存占用飙升(从2GB增至8GB,节点物理内存为16GB),需防止节点OOM(Out-of-Memory)崩溃。
解决步骤:
kubectl set resources deployment/python-container --limits=memory=4Gi,ephemeral-storage=2Gi,限制容器使用4GB物理内存+2GB Swap(ephemeral-storage对应Swap);dd if=/dev/zero of=/swapfile bs=1M count=2048、mkswap /swapfile、swapon /swapfile),并添加至/etc/fstab;kubectl top pod监控容器内存使用,发现泄漏容器后,通过kubectl delete pod重启容器。问题表现:CentOS 7服务器重启后,free -h显示Swap使用量为0,swapon --show无输出,手动swapon /swapfile可启用。
原因分析:/etc/fstab中Swap配置错误(如设备名变更,原为/dev/sdb1,现变为/dev/sdc1)。
解决方案:
/etc/fstab,将Swap配置行修改为正确设备名(/dev/sdc1 swap swap defaults 0 0);swapon -a启用所有fstab中的Swap;问题表现:系统日志(dmesg)中出现“scheduling while atomic: swapper”错误,系统无法正常启动,卡在内核加载界面。
原因分析:内核代码在原子上下文(如中断处理程序)调用了睡眠函数(如mutex_lock),触发调度冲突。
解决方案:
dmesg | grep -i "scheduling while atomic"定位错误发生的内核函数(如irq_handler);mutex_lock替换为mutex_lock_interruptible(允许中断);问题表现:CentOS 8服务器使用SSD作为Swap分区,iostat显示SSD写入量激增(日均100GB),系统性能提升不明显(vmstat 1显示si/so(Swap in/out)速率仍达5MB/s)。
原因分析:SSD随机写入性能有限(约50MB/s),频繁Swap操作加速SSD磨损,且性能提升不如物理内存。
解决方案:
swapoff /swapfile,删除/etc/fstab中的Swap配置);zram(内存中的压缩Swap):执行modprobe zram加载模块,echo lz4 > /sys/block/zram0/comp_algorithm设置压缩算法(LZ4),echo 4G > /sys/block/zram0/disksize设置Swap大小(4GB,为物理内存的1/4),mkswap /dev/zram0格式化,swapon /dev/zram0启用。iostat显示SSD写入量降至10GB/天,vmstat 1显示si/so速率降至0.1MB/s以下,系统性能提升30%。