36人参与 • 2025-08-13 • Linux
通过free -h查询到
内存还剩余很多,却使用 swap 分区;
1.swap设置开启的阀值过大,造成内存达到可使用swap的值
2.docker 设置了内存限制,但没限制swap的值(待求证)
3.根虚拟机machine.slice和系统system.slices、user.slices等使用了swap空间。
安装系统时,选择swap分区;swap不是越大越好,越大的时候说明内存不够用,应该增加内存。
redhat官方建议:
自己实际使用时,因为使用了centos的一键安装脚本anaconda-ks.cfg,
为了方便分配内存,所以固定大小配置,建议swap分区大小规则:
设置成16g
#查询默认的值 cat /proc/sys/vm/swappiness
centos7默认值可能是30;就是当内存使用>=(100-30=70)%内存总量时,开始使用内存;
当使用内存>=90%时才使用内存;
#临时设置 echo 10 > /proc/sys/vm/swappiness sysctl -p #生效
#永久设置 echo "vm.swappiness=10" >> /etc/sysctl.conf #永久修改 sysctl -p #生效
能有效使用内存,增强性能;如果机器一直长期超过70%的内存使用量,实际应该想想是不是要增加内存;
理解/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则生效
只要开启swap分区,不能保证一定不会用swap,即使配置为0,当为0时,内存确实不够时会增大内存回收频率,增加cpu使用率
#永久设置 echo "vm.swappiness=0" >> /etc/sysctl.conf #永久修改 sysctl -p #生效
以上操作后,需要重启服务器生效
另,如果docker的swap未设置或设置不合理造成swap提前使用(未验证);
则需要设置docker的swap;
参数–memory-swap
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论