性能优化经验:关闭 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 后可以迫使服务更高效地使用物理内存,同时管理员需要更合理地规划内存资源。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/922836.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】安装cuda

一、安装nvidia驱动 # 添加nvidia驱动ppa库 sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update# 查找推荐版本 sudo ubuntu-drivers devices# 安装推荐版本 sudo apt install nvidia-driver-560# 检验nvidia驱动是否安装 nvidia-smi 二、安装cudatoolkit&…

上天入地 灵途科技光电技术赋能空间感知

近来,人工智能技术频频亮相各大马拉松赛事,成为引人注目的科技亮点。 11月3日,杭州马拉松首次启用了机器狗作为配速员,以稳定的节奏为选手提供科学的跑步节奏。 11月11日,亦庄半程马拉松的终点处,人形机器…

Java三大特性:封装、继承、多态【详解】

封装 定义 隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读取和修改的访问级别便是封装。 在开发中造一个类就是封装,有时也会说封装一个类。封装可以隐藏一些细节或者包含数据不能被随意修改。 比如这是一个敏感的数据&a…

40分钟学 Go 语言高并发:【实战】并发安全的配置管理器(功能扩展)

【实战】并发安全的配置管理器(功能扩展) 一、扩展思考 分布式配置中心 实现配置的集中管理支持多节点配置同步实现配置的版本一致性 配置加密 敏感配置的加密存储配置的安全传输访问权限控制 配置格式支持 支持YAML、TOML等多种格式配置格式自动…

【ChatGPT大模型开发调用】如何获得 OpenAl API Key?

如何获取 OpenAI API Key 获取 OpenAI API Key 主要有以下三种途径: OpenAI 官方平台 (推荐): 开发者用户可以直接在 OpenAI 官方网站 (platform.openai.com) 注册并申请 API Key。 通常,您可以在账户设置或开发者平台的相关页面找到申请入口。 Azure…

苹果系统中利用活动监视器来终止进程

前言 苹果系统使用的时候总是感觉不太顺手。特别是转圈的彩虹球出现的时候,就非常令人恼火。如何找到一个像Windows那样任务管理器来终止掉进程呢? 解决办法 Commandspace 弹出搜索框吗,如下图: 输入“活动”进行搜索&#xff…

实战项目负载均衡式在线 OJ

> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:能自己实现负载均衡式在线 OJ。 > 毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安! > 专栏选自&#xff1…

python Flask指定IP和端口

from flask import Flask, request import uuidimport json import osapp Flask(__name__)app.route(/) def hello_world():return Hello, World!if __name__ __main__:app.run(host0.0.0.0, port5000)

burp suite-1

声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&a…

【Spring boot】微服务项目的搭建整合swagger的fastdfs和demo的编写

文章目录 1. 微服务项目搭建2. 整合 Swagger 信息3. 部署 fastdfsFastDFS安装环境安装开始图片测试FastDFS和nginx整合在Storage上安装nginxnginx安装不成功排查:4. springboot 整合 fastdfs 的demodemo编写1. 微服务项目搭建 版本总结: spring boot: 2.6.13springfox-boot…

【区块链】深入理解椭圆曲线密码学(ECC)

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 深入理解椭圆曲线密码学(ECC)1. 概述2. 椭圆曲线的数学基础2.1 基本定义2.2 有限…

【Qt流式布局改造支持任意位置插入和删除】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、源代码二、删除代码三、扩展总结 前言 最近在做一个需求需要流式布局,虽然官方example里有一个流式布局范例,但是不能满足我的需求…

JQuery -- 第九课

文章目录 前言一、JQuery是什么?二、JQuery的使用步骤1.引入2.书写位置3. 表示方法 三、JQuery选择器1.层级选择器2. 筛选选择器3. 排他思想4. 精品展示 四、jQuery样式操作1. 修改样式2.类操作1. 添加2. 移除3. 切换 五、jQuery动画1. 显示和隐藏2. 滑动1. slide2.…

Python 版本的 2024详细代码

2048游戏的Python实现 概述: 2048是一款流行的单人益智游戏,玩家通过滑动数字瓷砖来合并相同的数字,目标是合成2048这个数字。本文将介绍如何使用Python和Pygame库实现2048游戏的基本功能,包括游戏逻辑、界面绘制和用户交互。 主…

在Elasticsearch中,是怎么根据一个词找到对应的倒排索引的?

大家好,我是锋哥。今天分享关于【在Elasticsearch中,是怎么根据一个词找到对应的倒排索引的?】面试题。希望对大家有帮助; 在Elasticsearch中,是怎么根据一个词找到对应的倒排索引的? 在 Elasticsearch 中…

C# 数据结构之【图】C#图

1. 图的概念 图是一种重要的数据结构,用于表示节点(顶点)之间的关系。图由一组顶点和连接这些顶点的边组成。图可以是有向的(边有方向)或无向的(边没有方向),可以是加权的&#xff…

Mac 系统上控制台常用性能查看命令

一、top命令显示 在macOS的控制台中,top命令提供了系统当前运行的进程的详细信息以及整体系统资源的利用情况。下面是对输出中各个字段的解释: Processes: 483 total: 系统上总共有483个进程。 2 running: 当前有2个进程正在运行。 481 sleeping: 当前有…

Docker--通过Docker容器创建一个Web服务器

Web服务器 Web服务器,一般指网站服务器,是驻留于因特网上某种类型计算机的程序。 Web服务器可以向浏览器等Web客户端提供文档,也可以放置网站文件以供全世界浏览,或放置数据文件以供全世界下载。 Web服务器的主要功能是提供网上…

Linux网络——NAT/代理服务器

一.NAT技术 1.NAT IP转换 之前我们讨论了, IPv4 协议中, IP 地址数量不充足的问题,NAT 技术就是当前解决 IP 地址不够用的主要手段, 是路由器的一个重要功能。 NAT 能够将私有 IP 对外通信时转为全局 IP. 也就是一种将私有 IP 和全局IP 相互转化的技术方法: 很…

极简开源Windows桌面定时提醒休息python程序

当我们长期在电脑面前坐太久后,会产生一系列健康风险,包括干眼症,颈椎,腰椎,肌肉僵硬等等。解决方案是在一定的时间间隔内我们需要have a break, 远眺可以缓解干眼症等眼部症状,站起来走动两步,…