linux调优之swap设置方式

 更新时间:2025年08月13日 11:32:38   作者:IT杂人  
内存充足仍使用swap可能因阀值过大、Docker未限制或系统服务占用,建议按内存配置swap大小(<4G设4G,4-8G设8G,>8G设16G),调整swappiness至90%以减少使用,需重启生效,长期高内存使用应考虑扩容

通过free -h查询到

内存还剩余很多,却使用 swap 分区

原因分析

1.swap设置开启的阀值过大,造成内存达到可使用swap的值

2.docker 设置了内存限制,但没限制swap的值(待求证)

3.根虚拟机machine.slice和系统system.slices、user.slices等使用了swap空间。

1.swap设置大小

安装系统时,选择swap分区;swap不是越大越好,越大的时候说明内存不够用,应该增加内存。

redhat官方建议:

  • 物理内存小于等于2GB的swap
  • 应设置为物理内存的2倍
  • 物理内存大于2GB小于等于8G时swap
  • 应设置为等同与物理内存的大小
  • 物理内存大于8GB时swap
  • 应设置为大于等于4GB但不超过8GB。

自己实际使用时,因为使用了centos的一键安装脚本anaconda-ks.cfg,

为了方便分配内存,所以固定大小配置,建议swap分区大小规则:

  • 1.当小于4G时
  • 设置成4G;
  • 2.当大于4G到8G时
  • 设置成8G
  • 3.大于8G时

设置成16G

2.swap何时使用的时机(开启的阀值)

#查询默认的值
cat /proc/sys/vm/swappiness

centos7默认值可能是30;就是当内存使用>=(100-30=70)%内存总量时,开始使用内存;

  • 当值为0时,表示内存使用率>100%时使用内存,则表明【尽量】不使用swap,实际真占了100%后,还是会继续使用;
  • 当值为100时,表示内存使用率>0%时使用内存,这样则无时无刻不使用swap;

3.如何修改swappiness(开启的阀值)

当使用内存>=90%时才使用内存;

#临时设置
echo 10 > /proc/sys/vm/swappiness
sysctl -p #生效
#永久设置
echo "vm.swappiness=10" >> /etc/sysctl.conf #永久修改
sysctl -p #生效

能有效使用内存,增强性能;如果机器一直长期超过70%的内存使用量,实际应该想想是不是要增加内存;

删除、禁用swap分区,不挂载swap

理解/dev/dm-0,dm-1,dm-2

#1.查看交换分区挂载磁盘
	swapon -s
#2.根据上面的查找,填充下面的【可能会卡很久,因为在交换到物理内存,所以可跳过到3】
	swapoff /dev/X
#3.删除分区挂载
	vi /etc/fstab
#3.1 - 使用#号注释swap挂载信息的行,如下:
	#UUID=5c6b53d0-7964-4a24-a294-d48f3ad3e461 swap                    swap    defaults        0 0
#3.2 - 也可能是其他分区,如下:
	#/dev/mapper/centos-swap swap                    swap    defaults        0 0

以上操作后,需要重启服务器生效

#重启服务器
reboot
#4. free -h 查看生效
	如果swap分区total=0则生效

与配置0区别,最大化使用物理内存

只要开启swap分区,不能保证一定不会用swap,即使配置为0,当为0时,内存确实不够时会增大内存回收频率,增加cpu使用率

#永久设置
echo "vm.swappiness=0" >> /etc/sysctl.conf #永久修改
sysctl -p #生效

以上操作后,需要重启服务器生效

另,如果docker的swap未设置或设置不合理造成swap提前使用(未验证);

则需要设置docker的swap;

限制docker 的swap使用

参数–memory-swap

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Ubuntu上使用Netdata设置实时性能监控的详细流程

    Ubuntu上使用Netdata设置实时性能监控的详细流程

    Netdata通过可扩展的Web仪表板提供准确的性能监控,可以显示Linux系统上的流程和服务。这篇文章给大家介绍Ubuntu上使用Netdata设置实时性能监控的流程,感兴趣的朋友一起看看吧
    2018-08-08
  • 浅谈Linux的零拷贝技术

    浅谈Linux的零拷贝技术

    零拷贝主要的任务就是避免CPU将数据从一块存储拷贝到另外一块存储,主要就是利用各种零拷贝技术,避免让CPU做大量的数据拷贝任务,减少不必要的拷贝,需要的朋友可以参考下
    2023-04-04
  • Linux echo文本处理命令的使用及示例

    Linux echo文本处理命令的使用及示例

    这篇文章主要介绍了Linux echo文本处理命令的使用及示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • 浅谈Linux环境变量文件介绍

    浅谈Linux环境变量文件介绍

    这篇文章主要介绍了浅谈Linux环境变量文件介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • linux云服务搭建七日杀服务器的详细流程

    linux云服务搭建七日杀服务器的详细流程

    这篇文章主要介绍了linux云服务搭建七日杀服务器的详细流程,本文通过实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • 详解在Linux系统中如何识别和解决端口占用问题

    详解在Linux系统中如何识别和解决端口占用问题

    在日常的 Linux 系统管理和开发过程中,端口占用是一个常见且令人头疼的问题,无论是部署新服务、调试应用程序,还是进行系统维护,遇到端口被占用都可能导致服务无法正常启动或运行,本文将详细介绍在 Linux 系统中如何识别和解决端口占用问题,需要的朋友可以参考下
    2025-01-01
  • Centos搭建GTK+Codeblock完整版

    Centos搭建GTK+Codeblock完整版

    刚搭建完成一个程序用的软件。把自己在搭建时步骤写下来,省的在搭建的时候走弯路,找资料。
    2010-02-02
  • linux 入侵常用命令汇编

    linux 入侵常用命令汇编

    掌握这些命令也有助于配置linux的安全,大家可以看看。
    2009-07-07
  • xampp apache启动失效问题的解决方法

    xampp apache启动失效问题的解决方法

    在windows上使用xampp搭建php的开发环境,后来又安装了oracle 10g。
    2009-10-10
  • apache中通过mod_rewrite实现伪静态页面的方法

    apache中通过mod_rewrite实现伪静态页面的方法

    mod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面。下面我详细说说它的使用方法!对初学者很有用的哦!
    2011-08-08

最新评论