swappiness=1 后仍然频繁 swap 的几种隐藏内存压力来源
发布时间 - 2026-01-21 00:00:00 点击率:次swappiness=1不能禁用Swap,极端内存压力下内核仍会换出不活跃匿名页以避免OOM;真正内存压力信号是pgscan_direct/pgsteal_direct持续非零、r值长期超CPU核数且free
swappiness=1 并不等于“禁用 Swap”
很多人误以为把 swappiness 设为 1 就能彻底避免 Swap 使用,其实不是。Linux 内核在极端内存压力下仍会换出匿名页——哪怕只有一丁点空闲内存被耗尽,内核就会触发 direct reclaim,并在必要时把不活跃匿名页写入 Swap。这是保障系统不直接 OOM 的最后一道缓冲机制,无法绕过。
内存回收行为比 Swap 更早暴露压力
Swap 占用高常常是结果,不是原因。真正关键的信号藏在内存回收日志里:
-
持续非零的
pgscan_direct和pgsteal_direct(查/proc/vmstat):说明进程正在同步等待内存回收,已进入高危状态; -
r长期大于 CPU 核数 +free持续低于 5%(用vmstat 1观察):代表就绪队列积压、可用内存严重不足; -
dmesg | grep -i "invoked oom-killer"出现但未 kill 进程:说明内核已判定内存临界,只是暂时靠 Swap 缓了一步。
文件缓存与 slab 占用挤压真实可用内存
即使 free -h 显示还有几 GB “used”,MemAvailable 才是系统真正能立刻分配给新进程的内存。以下情况会让它远低于预期:
- 大量 page cache 被保留:比如频繁读大文件、日志轮转不及时、备份任务堆积;
-
slab 内存膨胀:尤其是
SReclaimable(可回收的 dentry/inode 缓存)过高,常见于高并发小文件访问或 NFS 挂载场景
;
- vfs_cache_pressure 默认值 100 太激进:它控制的是缓存回收强度,值越高越难释放 inode/dentry,反而推高 Swap 倾向。
容器与 cgroup 环境下的“隐形超分”
在 Docker 或 Kubernetes 中,Swap 行为更隐蔽:
- 宿主机
swappiness=1,但容器没设--memory-swappiness,它会继承宿主机值,而 cgroup v1 下 swap 限额默认不限制; - 多个容器共享同一台机器,各自内存 limit 总和超过物理内存,但没有统一 swap 限制,内核只能靠换出缓解;
- 查看
cat /sys/fs/cgroup/memory/machine.slice/memory.stat等路径,常发现total_swap字段非零,说明后台服务(如 systemd-journald、dbus)也在悄悄使用 Swap。
# linux
# node
# docker
# app
# mac
# ai
# kubernetes
# 继承
# 堆
# 并发
# 换出
# 仍会
# 的是
# 这是
# 有一
# 就会
# 尤其是
# 就能
# 多个
# 才是
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
javascript基于原型链的继承及call和apply函数用法分析
教你用AI将一段旋律扩展成一首完整的曲子
Laravel如何生成API文档?(Swagger/OpenAPI教程)
Laravel如何配置和使用缓存?(Redis代码示例)
Laravel如何使用.env文件管理环境变量?(最佳实践)
利用vue写todolist单页应用
Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】
php json中文编码为null的解决办法
PHP 500报错的快速解决方法
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
网站建设要注意的标准 促进网站用户好感度!
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】
JavaScript常见的五种数组去重的方式
Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】
Laravel观察者模式如何使用_Laravel Model Observer配置
ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
如何确认建站备案号应放置的具体位置?
如何快速搭建高效服务器建站系统?
如何正确下载安装西数主机建站助手?
HTML 中如何正确使用模板变量为元素的 name 属性赋值
微信小程序 配置文件详细介绍
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
android nfc常用标签读取总结
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
Laravel如何自定义分页视图?(Pagination示例)
动图在线制作网站有哪些,滑动动图图集怎么做?
如何用y主机助手快速搭建网站?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
如何在橙子建站上传落地页?操作指南详解
Laravel如何实现本地化和多语言支持?(i18n教程)
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
清除minerd进程的简单方法
详解Android——蓝牙技术 带你实现终端间数据传输
VIVO手机上del键无效OnKeyListener不响应的原因及解决方法
如何破解联通资金短缺导致的基站建设难题?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
Java解压缩zip - 解压缩多个文件或文件夹实例
利用 Google AI 进行 YouTube 视频 SEO 描述优化
如何挑选优质建站一级代理提升网站排名?
如何在IIS7上新建站点并设置安全权限?
laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
*服务器网站为何频现安全漏洞?
如何快速打造个性化非模板自助建站?
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?


