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

性能优化经验:关闭 SWAP 分区

        关闭 SWAP 分区,特别是在性能敏感场景(如 Elasticsearch 服务)中,主要与 SWAP 的工作机制和对应用性能的影响有关。以下是详细原因:


1. SWAP 的工作机制导致高延迟

  • SWAP 是什么:
    SWAP 分区是系统将物理内存 (RAM) 中不常用的数据移到磁盘上的一种机制,用于扩展虚拟内存。

  • 问题:
    SWAP 所在的磁盘(即使是 SSD)比物理内存的访问速度慢得多,通常慢数百倍甚至更多。
    当系统使用 SWAP 时:

    1. 数据需要从磁盘读取回内存(页面置换),这会导致明显的延迟。
    2. 对于频繁访问的数据,频繁的页面置换会引发 抖动(性能剧烈波动)。

对于 GC(垃圾回收):

  • 垃圾回收需要频繁地扫描和操作堆内存,如果部分堆内存被交换到 SWAP 上,GC 的执行效率会急剧下降,导致 停顿时间 (STW) 增加。
  • Elasticsearch 等对低延迟敏感的服务,GC 时间过长会显著影响查询或写入性能。

2. Elasticsearch 服务对低延迟的高要求

  • Elasticsearch 是一个内存密集型应用,依赖 JVM 堆内存中的数据结构(如索引缓存、查询上下文)。
  • 如果这些关键数据被置换到 SWAP:
    • 查询或索引操作的性能会显著下降。
    • 可能导致节点响应时间过长或超时,进而引发集群不稳定。

关闭 SWAP 后,所有内存访问都将直接从 RAM 进行,避免磁盘延迟对性能的影响。


3. 防止 OOM(Out of Memory)或过度依赖 SWAP

  • 当物理内存不足时,Linux 会优先使用 SWAP 而不是直接触发 OOM Killer。
  • 这虽然避免了进程被杀死,但:
    • 系统性能会因为频繁的 SWAP 而变得极差,甚至进入“卡死”状态。
    • 对于高性能应用来说,性能稳定性比“避免进程死掉”更重要。

通过关闭 SWAP,可以强迫管理员更精确地分配物理内存,避免隐藏的内存不足问题。


4. 推荐配置

禁用 SWAP 的具体方法:
  1. 临时关闭 SWAP:

    sudo swapoff -a
    

    (此操作仅对当前会话有效,重启后 SWAP 会再次启用)

  2. 永久禁用 SWAP:
    编辑 /etc/fstab 文件,注释掉 SWAP 分区的挂载行:

    # UUID=xxxx-xxxx-xxxx swap swap defaults 0 0
    
  3. 检查 SWAP 是否被禁用:

    free -m
    

    确保 SWAP 一栏显示为 0

  4. 优化 Linux 虚拟内存策略:
    如果仍需部分 SWAP(如避免极端情况),可以调整 SWAP 使用优先级:

    • 编辑 /etc/sysctl.conf,添加以下内容:
      vm.swappiness=1
      
    • 使配置生效:
      sudo sysctl -p
      

    这样系统仅在内存严重不足时才使用 SWAP。


总结

        关闭 SWAP 的目的是为了提高系统性能稳定性,特别是在 JVM 堆内存管理场景中(如 Elasticsearch)。
        SWAP 导致的高延迟和不可预测性会对内存密集型应用产生灾难性影响,关闭 SWAP 后可以迫使服务更高效地使用物理内存,同时管理员需要更合理地规划内存资源。

相关文章:

性能优化经验:关闭 SWAP 分区

关闭 SWAP 分区,特别是在性能敏感场景(如 Elasticsearch 服务)中,主要与 SWAP 的工作机制和对应用性能的影响有关。以下是详细原因: 1. SWAP 的工作机制导致高延迟 SWAP 是什么: SWAP 分区是系统将物理内存…...

SpringBoot小知识(2):日志

日志是开发项目中非常重要的一个环节,它是程序员在检查程序运行的手段之一。 1.日志的基础操作 1.1 日志的作用 编程期调试代码运营期记录信息: * 记录日常运营重要信息(峰值流量、平均响应时长……) * 记录应用报错信息(错误堆栈) * 记录运维过程数据(…...

java虚拟机——jvm是怎么去找垃圾对象的

JVM(Java虚拟机)通过特定的算法和机制来查找和识别垃圾对象,以便进行垃圾回收。以下是JVM查找垃圾对象的主要方法和步骤: 一、可达性分析法 JVM使用可达性分析法来识别垃圾对象。这种方法从一组称为“GC Roots”的对象作为起始点…...

Macos远程连接Linux桌面教程;Ubuntu配置远程桌面;Mac端远程登陆Linux桌面;可能出现的问题

文章目录 1. Ubuntu配置远程桌面2. Mac端远程登陆Linux桌面3. 可能出现的问题1.您用来登录计算机的密码与登录密钥环里的密码不再匹配2. 找不到org->gnome->desktop->remote-access 1. Ubuntu配置远程桌面 打开设置->共享->屏幕共享。勾选允许连接控制屏幕&…...

hadoop_HA高可用

秒懂HA HA概述HDFS-HA工作机制工作要点元数据同步参数配置手动故障转移自动故障转移工作机制相关命令 YARN-HA参数配置自动故障转移机制相关命令 附录Zookeeper详解 HA概述 H(high)A(avilable): 高可用,意味着必须有容错机制,不能因为集群故障…...

【MySQL】MySQL中的函数之JSON_ARRAY_APPEND

在 MySQL 8.0 及更高版本中,JSON_ARRAY_APPEND() 函数用于在 JSON 数组的指定位置追加一个或多个值。这个函数非常有用,特别是在你需要在 JSON 数组的末尾或特定位置添加新的元素时。 基本语法 JSON_ARRAY_APPEND(json_doc, path, val[, path, val] ..…...

torch.is_nonzero(input)

torch.is_nonzero(input) input: 输入张量 若输入是 不等于零的单元素张量 则返回True,否则返回False 不等于零的单元素张量:torch.tensor([0.]) 或 torch.tensor([0]) 或 torch.tensor([False])单元素张量: 只有一个数 的张量 import torch print(t…...

文本搜索程序(Qt)

头文件 #ifndef TEXTFINDER_H #define TEXTFINDER_H#include <QWidget> #include <QFileDialog> #include <QFile> #include <QTextEdit> #include <QLineEdit> #include <QTextStream> #include <QPushButton> #include <QMess…...

使用 Python 剪辑视频的播放速度

要使用 Python 调整视频的播放速度&#xff0c;可以利用 moviepy 库中的 fx&#xff08;特效&#xff09;模块来实现这一功能。通过 moviepy.editor 中的 VideoFileClip 类和 fx.speedx 函数&#xff0c;可以轻松地调整视频的播放速度。 安装 moviepy 首先&#xff0c;确保已…...

深入理解计算机系统,源码到可执行文件翻译过程:预处理、编译,汇编和链接

1.前言 从一个高级语言到可执行程序&#xff0c;要经过预处理、编译&#xff0c;汇编和链接四个过程。大家可以思考下&#xff0c;为什么要有这样的过程&#xff1f; 我们学习计算机之处&#xff0c;就应该了解到&#xff0c;计算机能够识别的只有二进制语言&#xff08;这是…...

Linux开发者的CI/CD(11)jenkins变量

文章目录 1. **环境变量 (Environment Variables)**常见的环境变量:示例:2. **构建参数 (Build Parameters)**常见的构建参数类型:示例:3 **在 `stages` 块内定义局部变量**示例:使用 `script` 步骤定义局部变量4 变量引用陷阱在 Jenkins 中,变量是自动化流程中非常重要的…...

深度学习视频编解码开源项目介绍【持续更新】

DVC (Deep Video Compression) 介绍&#xff1a;DVC (Deep Video Compression) 是一个基于深度学习的视频压缩框架&#xff0c;它的目标是通过深度神经网络来提高视频编码的效率&#xff0c;并降低比特率&#xff0c;同时尽可能保持视频质量。DVC 是一个端到端的神经网络模型&…...

Canva迁移策略深度解析:应对每日5000万素材增长,从MySQL到DynamoDB的蜕变

随着数字化设计的蓬勃发展&#xff0c;Canva作为一款备受欢迎的在线设计平台&#xff0c;面临着日益增长的用户生成内容挑战。每天&#xff0c;平台上新增的素材数量高达5000万&#xff0c;这对数据库系统提出了前所未有的要求。为了应对这一挑战&#xff0c;Canva决定对其数据…...

nacos常见面试题(2024)

nacos永久实例与临时实例区别 nacos实例有2种&#xff0c;分别为临时实例&#xff08;一般业务服务是临时的&#xff09;和永久实例&#xff08;如mysql、redis这种运维服务需要实时看到状态的设置为永久实例&#xff09;。 临时实例只会缓存到服务注册列表中&#xff0c;下线…...

68000汇编实战01-编程基础

文章目录 简介产生背景应用领域 语言学习EASy68K帮助文档IDE使用 编程语言commentslabels开始标签指令标签位置标签 opcode 操作码常用操作码数据传送算术运算逻辑运算控制流分支跳转地址跳转子程序跳转 位操作比较堆栈操作 IO操作码其他操作码 directives 指令DC指令EQU 指令S…...

你的网站真的安全吗?如何防止网站被攻击?

你的网站被黑客攻击过&#xff0c;很可能不止一次&#xff01; 这可不是危言耸听。微软最近发布了《2024 年微软数字防御报告》&#xff0c;报告中写到&#xff1a;“Windows 用户每天面临超过 6 亿次网络犯罪和国家级别的攻击&#xff0c;涵盖了从勒索软件到网络钓鱼再到身份…...

UE5 材质编辑器CheapContrast 节点

在 Unreal Engine 材质编辑器中&#xff0c;CheapContrast 节点是一个非常实用的节点&#xff0c;主要用于对图像或纹理的 对比度 进行调整&#xff0c;且执行效率较高&#xff0c;适合在性能要求较高的场景中使用。 CheapContrast 节点的作用 CheapContrast 节点通过调整输入…...

健身房小程序服务渠道开展

健身不单单是锻炼身体、保持身材&#xff0c;也是一种社交方式&#xff0c;城市里门店不少&#xff0c;每家都有一定流量和老客&#xff0c;但仅靠传统线下拉客/自然流量前往和线上朋友圈、短视频发硬广等方式还不够。 商家需要找到更多潜在目标客户&#xff0c;而消费者也对门…...

Java基础面试题08:Java中Exception和Error有什么区别?

在Java中&#xff0c;Exception 和 Error 是异常处理体系的两大核心概念。要理解它们的区别和应用&#xff0c;咱们可以逐步剖析。 Exception和Error的基础区别 共同点&#xff1a; 两者都继承自 Throwable 类&#xff0c;只有 Throwable 类型的实例才能被 throw 或 catch。 区…...

什么是axios?怎么使用axios封装Ajax?

学习目标 什么是axios怎么使用axios封装Ajax该如何使用Axios 封装 XHR 请求 什么是axios Axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;它可以在浏览器和 Node.js 环境中使用。Axios 提供了简单易用的 API&#xff0c;用于执行各种 HTTP 请求操作&#xff0c;如 GET、P…...

3步打造你的专属阅读系统:开源工具如何重构数字阅读体验

3步打造你的专属阅读系统&#xff1a;开源工具如何重构数字阅读体验 【免费下载链接】legado-Harmony 开源阅读鸿蒙版仓库 项目地址: https://gitcode.com/gh_mirrors/le/legado-Harmony 你是否曾遇到这样的困扰&#xff1a;阅读APP充斥广告弹窗、书源受限无法找到心仪内…...

多层PCB结构与设计技术详解

多层PCB内部结构解析与设计指南1. 多层PCB概述1.1 多层PCB的基本概念现代电子设备对电路板的要求越来越高&#xff0c;多层PCB已成为复杂电子系统的标准配置。与单层或双层PCB相比&#xff0c;多层PCB通过在绝缘基材上叠加多个导电层&#xff0c;实现了更高的布线密度和更优的信…...

Kimi-VL-A3B-Thinking Chainlit定制化开发:添加历史记录/多用户会话/图片标注功能

Kimi-VL-A3B-Thinking Chainlit定制化开发&#xff1a;添加历史记录/多用户会话/图片标注功能 1. 项目背景与模型介绍 Kimi-VL-A3B-Thinking是一款基于混合专家架构(MoE)的开源视觉语言模型(VLM)&#xff0c;在多模态推理和长上下文理解方面表现出色。该模型仅激活2.8B参数就…...

Gemma-3 Pixel Studio镜像免配置:开箱即用的12B多模态推理工作站

Gemma-3 Pixel Studio镜像免配置&#xff1a;开箱即用的12B多模态推理工作站 1. 产品概览 Gemma-3 Pixel Studio是基于Google最新开源Gemma-3-12b-it模型构建的高性能多模态对话终端。这个预配置的Docker镜像消除了复杂的部署流程&#xff0c;让用户能够立即体验12B参数大模型…...

测试用例设计-XMind

&#x1f680; 一、XMind 用例设计核心思路&#x1f449; 和传统Excel不同&#xff0c;XMind强调&#xff1a;以“功能模块”为主干 以“用户场景”为分支 以“测试点”为叶子节点&#x1f449; 本质结构&#xff1a;模块 → 场景 → 用例点 → 具体测试数据/预期&#x1f4cc;…...

【Python SM9性能生死线】:当SM9签名延迟突破120ms,你必须立即检查的4个Cython绑定陷阱

第一章&#xff1a;Python SM9性能生死线的临界认知SM9作为我国自主设计的标识密码算法标准&#xff08;GB/T 38635–2020&#xff09;&#xff0c;其在Python生态中的实现常因底层运算瓶颈而陷入“可运行但不可用”的灰色地带。性能临界点并非由单一因素决定&#xff0c;而是密…...

G5080 G6080 G7080 G1810 G2810 ,MG3680,ts3380最新清零软件5B00,5B01,5B02,1700,1701,1702,1704,P07,E08废墨收集器已满

下载地址&#xff1a;链接:https://pan.baidu.com/s/1j7Nwv715wX1JL3qidnGyXA?pwd0000 提取码:0000 常见 佳能打印机 型号&#xff1a; G5080 G6080 G7080 G1810 G2810 G3810 G4810 G1800 G2800 G3800 G4800 G5010 G6010 G7010 G1010 G2010 G3010 G4010 G1000 G2000 G3000 G40…...

AI性能测试:TPS之外还要关注什么?

在AI驱动的时代&#xff0c;性能测试已成为软件测试从业者的核心技能。传统软件测试中&#xff0c;TPS&#xff08;Transactions Per Second&#xff0c;每秒事务处理量&#xff09;常被视为黄金指标&#xff0c;用于衡量系统的吞吐能力。然而&#xff0c;AI系统因其独特的计算…...

石家庄整家定制口碑供应商

在石家庄&#xff0c;寻找一家值得信赖的整家定制服务商&#xff0c;是许多家庭在装修时的重要考量。一个优秀的定制品牌&#xff0c;不仅能为居者提供个性化的空间解决方案&#xff0c;更能将美学、功能与品质融为一体&#xff0c;让日常居住成为一种享受。关于我们位于石家庄…...

嵌入式OLED UI组件库:轻量级C++组件化设计

1. 项目概述 OLED UI Components 是一个面向嵌入式平台的轻量级、组件化 OLED 用户界面开发库&#xff0c;专为基于 SSD1306 驱动芯片的单色 OLED 显示屏&#xff08;典型分辨率为 12864&#xff09;设计。该库不直接操作硬件寄存器&#xff0c;而是构建在 Adafruit_SSD1306 库…...