当前位置: 首页 > 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步解锁iOS激活锁:Applera1n工具完整使用指南

3步解锁iOS激活锁&#xff1a;Applera1n工具完整使用指南 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 当你面对一部显示"激活锁"界面的iPhone&#xff0c;反复输入Apple ID却始终无法进入…...

深入剖析YOLOv8核心模块:从架构设计到实战应用全解析

1. YOLOv8架构设计揭秘 YOLOv8作为目标检测领域的标杆模型&#xff0c;其架构设计处处体现着工程师的巧思。我第一次拆解它的代码时&#xff0c;最惊艳的是它的模块化设计——就像搭积木一样&#xff0c;每个组件都能灵活替换。核心的Backbone部分采用CSPDarknet53结构&#xf…...

百川2-13B量化模型+OpenClaw:3种低成本个人AI助手应用方案

百川2-13B量化模型OpenClaw&#xff1a;3种低成本个人AI助手应用方案 1. 为什么选择量化模型OpenClaw组合 去年冬天&#xff0c;当我第一次尝试在本地部署大模型时&#xff0c;被显存不足的报错狠狠教育了一顿——我的RTX 3060显卡根本无法承载常规13B参数的模型。直到发现百…...

3个高级技巧:用ScintillaNET构建专业级文本编辑器的实战指南

3个高级技巧&#xff1a;用ScintillaNET构建专业级文本编辑器的实战指南 【免费下载链接】ScintillaNET A Windows Forms control, wrapper, and bindings for the Scintilla text editor. 项目地址: https://gitcode.com/gh_mirrors/sc/ScintillaNET 在当今的软件开发领…...

NaViL-9B实战手册:健康检查API与服务异常定位全流程

NaViL-9B实战手册&#xff1a;健康检查API与服务异常定位全流程 1. 平台概览 NaViL-9B是由专业AI研究机构开发的原生多模态大语言模型&#xff0c;能够同时处理纯文本问答和图片理解任务。该模型特别针对中文场景优化&#xff0c;支持中英文混合输入&#xff0c;为开发者提供…...

SEO_新手必看的SEO优化入门教程与核心方法(361 )

<h3 id"seoseo">SEO:新手必看的SEO优化入门教程与核心方法</h3> <p>在互联网时代&#xff0c;拥有一个成功的网站不仅仅是有好的设计和内容&#xff0c;还需要通过SEO&#xff08;搜索引擎优化&#xff09;来提升网站的可见性和流量。对于新手来说…...

cutlass代码架构分析

CUTLASS 代码架构分析 本文档基于 cutlass代码进行梳理,快速理解 CUTLASS 4.x 的模块边界与调用链路。 1. 总体架构 CUTLASS 本质上是一个 header-only 的 CUDA C++ 模板库,外围配套了可选构建目标: include/:核心库(cutlass + cute) tools/:库实例化、性能测试与通用…...

Comsol 中微环谐振腔的环形波导耦合:波束包络与波动光学模块对比

Comsol微环谐振腔&#xff0c;环形波导耦和。 对比波束包络和波动光学两个不同模块。在光学领域&#xff0c;微环谐振腔因其独特的光学特性在众多应用中发挥着关键作用&#xff0c;比如光滤波、光传感等。而 Comsol 作为一款强大的多物理场仿真软件&#xff0c;为我们深入研究微…...

【问题处理】如何解决PSQLException中2-byte值超出范围导致的整数溢出错误

1. 什么是PSQLException中的2-byte值溢出错误 最近在调试一个Java应用时&#xff0c;遇到了一个让人头疼的错误&#xff1a;Tried to send an out-of-range integer as a 2-byte value: 110629。这个错误看起来有点晦涩&#xff0c;但其实理解起来并不复杂。简单来说&#xff0…...

Project Sistine核心代码剖析:从图像分割到鼠标事件模拟

Project Sistine核心代码剖析&#xff1a;从图像分割到鼠标事件模拟 【免费下载链接】sistine Turn a MacBook into a Touchscreen with $1 of Hardware 项目地址: https://gitcode.com/gh_mirrors/si/sistine Project Sistine是一个创新的开源项目&#xff0c;它能让普…...