当前位置: 首页 > article >正文

Linux系统swap分区动态调整实战指南

1. 为什么需要动态调整swap分区第一次接触Linux服务器管理时我发现一个奇怪现象明明物理内存还剩不少系统却开始频繁使用swap分区导致应用响应变慢。后来才知道这是典型的swap配置不合理案例。swap分区相当于Windows系统中的虚拟内存但它的作用远不止于此。现代Linux系统中swap主要承担三个关键角色内存扩展当物理内存不足时将不活跃的内存页暂存到磁盘休眠支持实现系统休眠到磁盘的功能内存压力缓冲即使内存充足内核也会提前将部分内存页交换出去实际运维中常见这些场景需要调整swap跑机器学习训练时突然报内存不足错误数据库服务器频繁发生OOM内存溢出杀死进程发现swap使用率长期高于30%导致IO瓶颈云服务器升级配置后原有swap分区过小去年我们有个MongoDB集群就遇到典型问题物理内存从32G扩容到128G后原有的8G swap分区反而导致性能下降。通过动态缩减swap空间最终使查询延迟降低了40%。2. 准备工作评估你的swap需求2.1 当前swap状态检查动手前先用这三个命令快速诊断free -h # 查看内存和swap总量及使用情况 swapon --show # 显示swap设备详细信息 vmstat 1 5 # 观察si/so字段判断当前swap交换频率关键指标解读swappiness值/proc/sys/vm/swappiness默认60值越高越倾向使用swap。数据库服务器建议设为10-30swap使用率持续高于30%可能需要扩容swap交换频率vmstat的si/so频繁交换说明内存不足2.2 计算合理的swap大小传统经验法则已经过时现代系统建议内存4Gswap内存x24G-16Gswap内存大小16G-64Gswap内存x0.564G4G-8G足够特殊场景调整需要休眠功能swap≥物理内存数据库服务器swap内存x0.25容器/K8s节点建议禁用swap3. 实战swap文件方式调整3.1 扩容swap文件推荐方案这是最灵活的调整方式我帮客户处理过上百次。以增加2G swap为例# 创建swap文件比dd更快的fallocate sudo fallocate -l 2G /swapfile_new # 设置权限重要安全措施 sudo chmod 600 /swapfile_new # 格式化swap sudo mkswap /swapfile_new # 立即启用 sudo swapon /swapfile_new --priority 10 # 验证 free -h避坑指南使用fallocate可能产生swap文件有洞警告改用dd if/dev/zero更可靠多swap设备时用--priority参数控制使用顺序大容量swap超过8G建议分多个小文件性能更好3.2 缩减swap文件上周刚帮一个K8s节点优化过操作流程# 禁用所有swap sudo swapoff -a # 重建1G大小的swap文件 sudo fallocate -l 1G /swapfile_new sudo chmod 600 /swapfile_new sudo mkswap /swapfile_new # 启用新swap并删除旧文件 sudo swapon /swapfile_new sudo rm /swapfile_old # 更新/etc/fstab重要 sudo vim /etc/fstab # 修改对应条目关键注意确保物理内存足够否则禁用swap可能导致OOM生产环境建议在低峰期操作一定要更新fstab否则重启后配置丢失4. 传统分区方式调整方案4.1 使用LVM扩容swap分区我的生产环境首选方案优势是可以在线调整# 检查当前卷组空间 sudo vgdisplay # 扩展swap所在的逻辑卷 sudo lvextend -L 2G /dev/vg00/swap_lv # 重新初始化swap sudo mkswap /dev/vg00/swap_lv # 激活修改 sudo swapon /dev/vg00/swap_lvLVM技巧用-r参数可以自动resize2fs仅ext4文件系统空间不足时先用vgextend添加新物理卷用lvresize替代lvextend可以更精确控制大小4.2 缩减LVM swap分区风险较高的操作务必先备份# 禁用swap sudo swapoff /dev/vg00/swap_lv # 调整大小会交互确认 sudo lvresize -L 1G /dev/vg00/swap_lv # 重新格式化 sudo mkswap /dev/vg00/swap_lv # 重新启用 sudo swapon /dev/vg00/swap_lv灾难恢复如果操作中断导致系统无法启动用LiveCD进入系统修复激活卷组vgchange -ay重新创建swapmkswap /dev/mapper/vg00-swap_lv更新fstab和grub配置5. 高级调优与故障处理5.1 性能优化参数在/etc/sysctl.conf中添加vm.swappiness30 # 降低swap倾向 vm.vfs_cache_pressure100 # 调整缓存回收压力 vm.dirty_ratio10 # 减少脏页比例 vm.dirty_background_ratio5应用配置sysctl -p5.2 常见问题排查问题1swapon报设备或资源忙解决方案swapoff -a后再试检查是否有进程占用lsof | grep swap问题2重启后swap未自动挂载检查fstab条目格式是否正确确认文件系统检查顺序fsck不为1问题3swap使用率异常高但内存充足可能是内存泄漏用smem分析进程内存检查swappiness值是否设置过高6. 生产环境最佳实践根据我管理超过200台服务器的经验总结这些黄金法则云环境优先使用swap文件而非分区方便随时调整数据库服务器单独使用高性能SSD做swap容器环境K8s节点建议禁用swap监控策略设置这些告警阈值swap使用率30%持续5分钟每秒swap交换次数10自动化脚本使用Ansible批量调整swap配置- name: Configure swap hosts: all tasks: - name: Create swap file command: | fallocate -l {{ swap_size }} /swapfile chmod 600 /swapfile mkswap /swapfile when: swap_file.stat.exists False

相关文章:

Linux系统swap分区动态调整实战指南

1. 为什么需要动态调整swap分区? 第一次接触Linux服务器管理时,我发现一个奇怪现象:明明物理内存还剩不少,系统却开始频繁使用swap分区,导致应用响应变慢。后来才知道,这是典型的swap配置不合理案例。swap分…...

屏幕水印革命:在代码里嵌入反扫描图腾

引言:测试安全的隐形护盾在软件测试领域,敏感数据泄露如同悬顶之剑——测试用例、缺陷报告、核心算法一旦被非法截屏传播,轻则导致知识产权流失,重则引发商业灾难。传统防护手段(如权限管控)在手机拍照、截…...

OpenVINO AI音频引擎:重构音频编辑工作流的技术革命指南

OpenVINO AI音频引擎:重构音频编辑工作流的技术革命指南 【免费下载链接】audacity Audio Editor 项目地址: https://gitcode.com/GitHub_Trending/au/audacity 一、技术原理:AI音频处理的底层突破 1.1 智能音频引擎的工作原理解析 OpenVINO&a…...

OFDM UWB系统基于训练序列的同步算法 matlab源代码 代码有详细注释,完美运行

OFDM UWB系统基于训练序列的同步算法 matlab源代码 代码有详细注释,完美运行数字通信系统里有个挺要命的问题——信号咋对齐?OFDM-UWB这玩意儿速度快、抗干扰强,但同步要是没搞好,整个系统直接废了。今天咱们来扒一扒用训练序列做…...

运算放大器与电压比较器原理及应用对比

运算放大器与电压比较器的原理分析与工程应用1. 器件概述与符号对比1.1 基本符号结构运算放大器(Operational Amplifier)和电压比较器(Voltage Comparator)在原理图符号上具有完全相同的表现形式,均包含五个基本引脚:正电源引脚(VCC/V)负电源引脚(GND/-V…...

TensorRT C#封装库深度评测:比Python快多少?工业级模型部署实战(附性能对比)

TensorRT C#封装库工业级性能对决:量化实测与实战调优指南 当工业级应用遇上AI推理,毫秒级延迟差异可能意味着数百万的产线损失。本文将带您深入实测TensorRT C#封装库与Python原生接口的性能鸿沟,并揭示如何在高并发PLC系统中实现亚毫秒级稳…...

如何用InvenTree开源库存管理系统实现零基础高效库存管理

如何用InvenTree开源库存管理系统实现零基础高效库存管理 【免费下载链接】InvenTree Open Source Inventory Management System 项目地址: https://gitcode.com/GitHub_Trending/in/InvenTree 在当今数字化时代,无论是小型制造企业、创客工作室还是电子爱好…...

测试覆盖率99.5%的终极革命:claude-code-sub-agents如何重新定义自动化测试

测试覆盖率99.5%的终极革命:claude-code-sub-agents如何重新定义自动化测试 【免费下载链接】claude-code-sub-agents Collection of specialized AI subagents for Claude Code for personal use (full-stack development). 项目地址: https://gitcode.com/gh_mi…...

ESP32上玩转LVGL8:手把手教你解决移植中的常见坑(含ST7735S适配)

ESP32与LVGL8深度适配实战:ST7735S显示驱动的优化与避坑指南 在嵌入式GUI开发领域,LVGL(Light and Versatile Graphics Library)因其轻量级和高度可定制性已成为开源图形库的佼佼者。当ESP32这颗物联网明星芯片遇上LVGL8&#xff…...

从语义到轨迹:VLM/VLA如何重塑端到端自动驾驶的推理与执行

1. 视觉语言大模型如何打通自动驾驶的任督二脉 想象一下你坐在副驾驶教新手开车:"前面路口左转,注意右侧电动车,减速让行"——人类教练用语言就能传递复杂驾驶策略。但传统自动驾驶系统像两个语言不通的部门:感知模块输…...

TUXEDO Control Center核心架构解密:从代码组织到环境配置的实践指南

TUXEDO Control Center核心架构解密:从代码组织到环境配置的实践指南 【免费下载链接】tuxedo-control-center A tool to help you control performance, energy, fan and comfort settings on TUXEDO laptops. 项目地址: https://gitcode.com/gh_mirrors/tu/tuxe…...

STM32CubeMX + HAL 库:定时器输入捕获的进阶应用,多通道PWM信号同步测量与动态分析

1. 多通道PWM信号同步测量的核心挑战 在电机控制或无人机舵机系统中,经常需要同时监测多个PWM信号的实时状态。比如四轴飞行器的四个电调信号,或者机械臂的六个关节舵机反馈。传统单通道测量方法需要轮流采样,无法捕捉各通道间的相位关系&…...

USB协议分析不求人:用Wireshark解码设备描述符请求的完整指南

USB协议深度解析:用Wireshark拆解设备描述符请求的实战手册 当你第一次将USB设备插入电脑时,主机与设备之间那场无声的对话就已经开始了。作为开发者,你是否曾好奇过这个看似简单的插拔动作背后,究竟隐藏着怎样的数据交换秘密&…...

远程调试革新性实践:Chrome DevTools App全方位技术指南

远程调试革新性实践:Chrome DevTools App全方位技术指南 【免费下载链接】chrome-devtools-app Chrome DevTools packaged as an app via Electron 项目地址: https://gitcode.com/gh_mirrors/ch/chrome-devtools-app 一、远程调试的核心价值:突破…...

基于Matlab的双向LSTM网络需求预测:包含训练集结果、训练集误差、测试集结果及测试集误差的输出

基于matlab的双向LSTM网络的需求预测,结果输出包括训练集结果、训练集误差,测试集结果、测试集误差。 数据可更换自己的,程序已调通,可直接运行。最近在折腾时间序列预测的项目,偶然发现双向LSTM在处理需求预测这类前后…...

OpenClaw移动端管理:百川2-13B-4bits模型任务远程监控方案

OpenClaw移动端管理:百川2-13B-4bits模型任务远程监控方案 1. 为什么需要移动端管理OpenClaw任务? 去年冬天的一个深夜,我正在外地出差,突然接到同事紧急消息:"那个自动生成周报的脚本好像卡住了,客…...

OpenClaw学习助手:百川2-13B驱动的自动化笔记整理系统

OpenClaw学习助手:百川2-13B驱动的自动化笔记整理系统 1. 为什么需要自动化笔记整理 作为一个经常需要阅读大量技术文档和论文的开发者,我发现自己陷入了一个困境:每次下载新的PDF或PPT文件后,要么没时间仔细阅读,要…...

OpenBMC开发环境搭建:从VirtualBox到QEMU的完整流程(Romulus平台实测)

OpenBMC开发环境搭建:从VirtualBox到QEMU的完整流程(Romulus平台实测) 在服务器管理和数据中心运维领域,OpenBMC作为开源基板管理控制器解决方案,正逐渐成为企业级硬件管理的首选。本文将手把手带你完成从零开始搭建Op…...

Adafruit_GFX_1351:嵌入式TFT显示的轻量级图形适配层

1. Adafruit_GFX_1351 库概述:面向嵌入式显示驱动的轻量级图形抽象层Adafruit_GFX_1351 是一个专为 ST7789V/ST7735S 等兼容 135240 分辨率 IPS TFT 显示屏设计的图形驱动库,其核心定位并非独立显示驱动,而是作为 Adafruit GFX 图形库&#x…...

【农业AI实战权威指南】:Python图像识别精度提升7大关键瓶颈与2024最新调优方案

第一章:农业AI图像识别精度提升的底层逻辑与行业挑战农业AI图像识别并非简单套用通用计算机视觉模型,其精度瓶颈根植于农田场景特有的物理复杂性与数据稀缺性。光照剧烈变化、作物生长阶段连续演化、病斑形态微小且易与阴影/污渍混淆,导致传统…...

用MATLAB玩转三维可视化:手把手教你绘制动态曲面图(含peaks函数详解)

MATLAB三维可视化实战:从静态曲面到动态交互的全方位指南 科研工作者常面临海量数据的可视化挑战,而MATLAB提供的三维图形工具链能将这些抽象数字转化为直观的空间形态。本文将带您深入探索三维可视化的核心技巧,从基础绘图到高级交互&#x…...

告别盲目下载:用STM32CubeIDE仿真功能在电脑上预演你的硬件行为

告别盲目下载:用STM32CubeIDE仿真功能在电脑上预演你的硬件行为 在嵌入式开发领域,每一次将程序烧录到硬件的过程都像是一次小小的冒险——你永远无法百分百确定代码在真实硬件上会如何表现。对于使用STM32系列芯片的开发者来说,这种不确定性…...

Python内存泄漏自动拦截方案(CPython 3.8+内核级策略大揭秘)

第一章:Python内存泄漏自动拦截方案(CPython 3.8内核级策略大揭秘)CPython 3.8 引入的 tracemalloc 增强机制与对象生命周期钩子(PyObject_New, PyObject_Free 的可插拔拦截点),为内存泄漏的实时感知与自动…...

OpenCore Legacy Patcher技术指南:让老旧Mac重获新生的完整方案

OpenCore Legacy Patcher技术指南:让老旧Mac重获新生的完整方案 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你的Mac是否也面临"被淘汰"的困境&a…...

HTML表单回车键的隐藏陷阱:为什么你的input总在刷新页面?5种解决方案实测

HTML表单回车键的隐藏陷阱与实战解决方案 你是否曾在电商后台系统填写冗长的商品信息时,习惯性按下回车键换行,却发现整个页面突然刷新,刚刚输入的数据全部消失?这种令人抓狂的体验背后,隐藏着HTML表单设计中的一个经典…...

开源情报员:OpenClaw+nanobot镜像竞品动态追踪器

开源情报员:OpenClawnanobot镜像竞品动态追踪器 1. 为什么需要自动化竞品追踪 作为一名独立开发者,我每天需要花费大量时间手动检查竞品的GitHub仓库更新。这种重复性工作不仅效率低下,还容易遗漏关键信息。直到我发现OpenClaw与nanobot镜像…...

ESP32逆向复现Enjoy Motors遮阳帘433MHz滚动码协议

1. 项目概述EnjoyRemoteLib 是一个专为 ESP32 平台设计的 Arduino 库,核心目标是完整复现 Enjoy Motors 系列电动遮阳帘遥控器的无线通信协议,从而实现对 EMSTEEL4 及兼容型号遮阳帘设备的非侵入式远程控制。该库并非基于厂商公开 SDK,而是通…...

保姆级教程:用ONNXRuntime对比YOLO11的PyTorch与ONNX输出差异

保姆级教程:用ONNXRuntime对比YOLO11的PyTorch与ONNX输出差异 在模型部署的实践中,PyTorch到ONNX的转换是常见需求,但转换后的模型输出是否与原始模型一致却容易被忽视。本文将手把手教你如何通过ONNXRuntime对比YOLO11模型在PyTorch和ONNX两…...

论文AI率怎么稳过知网维普?2026最新基准测试:5款实测工具教你一次定稿

知网AIGC检测2026最新攻略!亲测有效,AI率从70%压到9% 自从2026年知网AIGC检测系统全面迭代升级,全国高校几乎统一把AI写作率合格线卡死在15%以内,身边同学因为AI率超标被打回重改、延迟答辩的比比皆是。 这段时间我试遍了全网所…...

CompactGUI社区数据库:游戏压缩效果的终极共享指南

CompactGUI社区数据库:游戏压缩效果的终极共享指南 【免费下载链接】CompactGUI Transparently compress active games and programs using Windows 10/11 APIs 项目地址: https://gitcode.com/gh_mirrors/co/CompactGUI 你是否曾为电脑存储空间不足而烦恼&a…...