文章目录

    • 前言
    • 创建交换文件(推荐)
    • 清理旧交换区

前言

很多刚开始使用 CentOS 的用户都会遇到。1GB 的交换分区在现代应用环境下确实偏小,很容易在内存压力大时导致系统性能下降甚至应用程序被强制终止。

关于交换分区的大小,没有一成不变的强制规则 ,但有一些被广泛接受和遵循的最佳实践和建议 。这些建议也随着服务器内存(RAM)容量的增长而演变。

交换分区大小的传统规则与现代建议
1. 传统规则(适用于旧时代,当内存以 MB 或少量 GB 计)
在过去,Linux 交换分区的大小通常遵循一个经验法则:

如果内存不足 2GB :交换分区大小设置为物理内存的 2 倍 。
如果内存大于 2GB :交换分区大小设置为 物理内存 + 2GB 。
这个规则在现代大内存服务器上已经不再适用(例如,为 64GB 内存的服务器分配 66GB 的交换区是巨大且不必要的浪费)。

2. 现代最佳实践(适用于当前时代,内存通常 >= 4GB)
现在的建议更侧重于系统的用途允许的休眠(Hibernate)需求

  • 服务器工作负载 :
    • 最小化建议 :对于拥有充足物理内存(例如 16GB 或更多)的服务器,至少 4GB 的交换分区是一个常见的起点。这可以应对偶尔的内存峰值。
    • 内存工作集建议 :一个更科学的方法是,根据系统监控(如使用 free -h 或 vmstat 命令)观察到的常驻内存集大小 来设置。交换分区应至少能容纳这部分数据,以便在极端情况下内核有空间可以转移内存页。
    • 通用建议 :对于生产服务器,一个安全且常见的做法是:
      • 物理内存 < 8GB:设置交换分区为 物理内存的 1.5 倍
      • 物理内存 >= 8GB:设置交换分区为 4GB 到 8GB
  • 桌面/工作站工作负载(允许休眠) :
    • 如果您希望使用休眠(Hibernate / Suspend-to-Disk) 功能,交换分区必须 大于或等于物理内存的大小。因为休眠时,会将整个内存的内容转储到交换分区中。
    • 如果不需休眠,可以参考服务器建议,通常 4GB-8GB 即可。
  • 特殊情况 :
    • 内存极度充裕 :如果您的服务器有非常大量的内存(如 128GB、256GB 甚至更多),并且运行的应用非常稳定,几乎不会出现内存耗尽的风险,那么甚至可以只设置一个 1GB 甚至 0.5GB 的交换分区。但强烈不建议完全禁用交换分区 ,因为即使内存很大,内核的一些内部机制(如交换倾向 swappiness)仍然会与交换区交互,完全禁用可能在某些边缘情况下导致非预期行为(如 kswapd 进程高CPU占用)。
  • 应用程序要求 :
    • 某些特定软件(如 Oracle Database、SAP HANA)对其运行环境的交换空间有明确的要求,请务必遵循其官方文档。

在这里插入图片描述

创建交换文件(推荐)

这种方法不需要重新分区,是最安全、最便捷的方式。

检查当前交换空间 :

sudo swapon --show
free -h

创建用于交换的文件 (这里以创建 4GB 文件为例):

# 使用 dd 命令创建一个 4GB 的空文件
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress
# 或者使用 fallocate(更快,但某些旧文件系统不支持)
# sudo fallocate -l 4G /swapfile

设置正确的权限 :

sudo chmod 600 /swapfile

格式化为交换分区格式 :

sudo mkswap /swapfile

启用交换文件 :

sudo swapon /swapfile

验证新交换空间是否生效 :

sudo swapon --show
free -h

永久生效 :编辑 /etc/fstab 文件,在文件末尾添加一行,确保系统启动时自动挂载交换文件。

sudo vim /etc/fstab

添加以下内容:

/swapfile swap swap defaults 0 0

清理旧交换区

1.禁用旧的交换空间 :

sudo swapoff /www/swap

执行这个命令后,内核会将 /www/swap 中的数据(如果有的话)移回内存或转移到其他交换空间(即您新加的 /swapfile),然后将其从交换池中移除。
2.再次检查交换空间状态 :

sudo swapon --show
free -h

现在您应该看到只有 /swapfile 这一项,总交换空间大小约为 4G。

3.确保永久生效(您已经做了,这是关键) :
您已经编辑了 /etc/fstab,注释或删除了 /www/swap 的那一行,并添加了 /swapfile 的行。

# 删除这行旧的
/www/swap    swap    swap    defaults    0 0
  • 删除旧行 :确保下次重启时,系统不会自动重新激活旧的 /www/swap。
  • 添加新行 :确保下次重启时,系统会自动激活新的 /swapfile。

4.(可选)删除旧的交换文件以释放磁盘空间 :
既然已经不再使用,您可以安全地删除它:

sudo rm /www/swap

总结:
现象是正常的 :swapon 命令是添加 (Add)交换空间,而不是替换 (Replace)。
要达到替换目的 ,需要先用手动 swapoff 命令移除 旧的,然后再用 swapon 添加新的。
修改 /etc/fstab 是为了保证这个“替换”操作在重启后也能持久化生效。
所以,您接下来只需执行 sudo swapoff /www/swap,就完成了从旧交换空间到新交换空间的切换。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/95332.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/95332.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/95332.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript原型与原型链:对象的家族传承系统

文章目录JavaScript原型与原型链&#xff1a;对象的"家族传承"系统 &#x1f468;&#x1f469;&#x1f467;&#x1f466;引言&#xff1a;为什么需要原型&#xff1f;原型系统三大核心概念概念关系图核心概念表一、原型基础&#xff1a;对象如何"继承"属…

数据库语法差异对比

特性MySQLMSSQLOraclepostgresql单行注释--、#&#xff08;少&#xff09;------多行注释/* *//* *//* *//* */字符串连接<code>CONCAT(str1,str2)</code>、<code>CONCAT_WS(separator, str1, str2)</code>、CONCAT&#xff08;str1,str2&#xff09;(…

GIS大学课程表都长啥样?几个地信专业的大学一周课程表

前几天&#xff0c;有个准大一的同学问&#xff1a;地信大学课程安排都是啥样的&#xff1f;简单的地理学、遥感学课程之类的对准大一的同学们来说太抽象了&#xff0c;有没有更具体一点的&#xff1f;他在新生群里问本校的学长&#xff0c;得到的课表不是这样的&#xff1a;就…

leetcode 3027. 人员站位的方案数 II 中等

给你一个 n x 2 的二维数组 points &#xff0c;它表示二维平面上的一些点坐标&#xff0c;其中 points[i] [xi, yi] 。 我们定义 x 轴的正方向为 右 &#xff08;x 轴递增的方向&#xff09;&#xff0c;x 轴的负方向为 左 &#xff08;x 轴递减的方向&#xff09;。类似的…

oracle 从一张表更新到另外一张表的方法(MERGE)

之前更新表格经常用 update aaa set (aaa.q,aaa.w) (select bbb.q,bbb.w from bbb where bbb.eaaa.e)的方法 后面学习了一个新的方法&#xff0c;MERGE法&#xff0c;这种写法更适合&#xff0c;因为对于空的值可以自定义定义其值&#xff0c;这样写存储过程的时候就不需要频繁…

Huggingface终于没忍住,OpenCSG坚持开源开放

在全球人工智能竞争进入白热化的当下&#xff0c;开源与闭源之路的选择正在成为决定未来格局的关键。当全球最大的AI开源平台Hugging Face终于承认"开源是赢得AI竞赛的关键"&#xff0c;并呼吁美国重新重视开源赛道时&#xff0c;OpenCSG&#xff08;开放传神&#x…

计算机网络模型总概述

//网络通讯 --- 不同主机之间的通信(进程间通信) 一、概述 目前使用的计算机网络模型主要分为两个&#xff1a;OSI七层模型和TCP/IP模型 相比OSI七层模型 &#xff0c;TCP/IP模型更简洁&#xff0c;更实用&#xff0c;因此目前所使用的基本都是TCP/IP模型&#xff0c;已成为…

HTTPS -> HTTP 引起的 307 状态码与HSTS

1.应用场景 主要用于了解HSTS, 以及如何合理设置, 如正式服和测试服, 开发环境; 摘要&#xff1a;当HTTPS网站返回307状态码临时重定向到HTTP时&#xff0c;会带来安全风险&#xff08;如中间人攻击和混合内容问题&#xff09;。 HSTS机制通过强制HTTPS通信可解决此问题&#…

PortSwigger靶场之DOM XSS in document.write sink using source location.search通关秘籍

一、靶场描述这个靶场在搜索查询的跟踪功能中&#xff0c;包含一个基于DOM的跨站脚本&#xff08;DOM-based XSS&#xff09;漏洞。该漏洞的产生是因为网站使用了一个名为 document.write 的 JavaScript 函数&#xff0c;这个函数会把数据直接写入到页面中。而写入的数据来源于…

深度学习篇---Pytorch常用优化器

优化器介绍&#xff1a;在 PyTorch 中&#xff0c;优化器&#xff08;Optimizer&#xff09;的作用是根据模型参数的梯度来更新参数&#xff0c;以最小化损失函数。下面用通俗易懂的方式介绍几种常用的优化器&#xff1a;1. SGD&#xff08;随机梯度下降&#xff09;最基础的优…

0903 C++类的运算符重载、静态成员与继承

Part 1.梳理思维导图一.运算符重载1.运算符重载的作用使原本只能对基本数据类型生效的运算符&#xff0c;在重载后&#xff0c;满足可以对构造类型数据生效。2.关系运算符重载a.关系运算符种类> > < < !b.分析参数表达式…

Cloudflare安全规则实用指南:从路径拦截到IP限制的10个经典范例

前言&#xff1a;在Cloudflare的安全防护体系中&#xff0c;自定义规则是抵御特定威胁的“精准武器”。除了基础的路径拦截&#xff0c;日常运维中还有许多高频场景需要针对性配置。本文将通过10个实用范例&#xff0c;带你掌握Cloudflare规则的灵活用法&#xff0c;覆盖路径防…

数据结构(时空复杂度)

目录 一、算法复杂度 二、时间复杂度 1.不同时间度代码举例 三、空间复杂度 一、算法复杂度 算法复杂度&#xff08;评估算法优劣一个重要指标&#xff09;分为时间复杂度和空间复杂度。 时间复杂度是指执行算法所需要的计算工作量&#xff0c;而空间复杂度是指执行这个…

ESXI8多网卡链路聚合

1. 背景 测试服务器只有千兆网卡&#xff0c;增加上行带宽&#xff0c;使用两块网卡做链路聚合。 2. 环境 VM ESXI 8.0 华为交换机 S5735S 3. 交换机配置 负载均衡方式采用了src-dst-ipTrunk模式采用了手工负载分担&#xff08;测试了静态LACP&#xff0c;未成功&#xff09;4.…

从“人工驱动”到“AI协同”:良策金宝AI如何助力设计院数智化跃迁?

在“双碳”目标驱动下&#xff0c;电力工程项目的数量与复杂度持续攀升。设计院面临“项目多、周期短、人力紧”的三重压力&#xff0c;传统的“人工驱动”模式已难以为继。良策金宝AI&#xff0c;正是这场变革的核心引擎。它以AI驱动数智化服务&#xff0c;为工程设计企业提供…

vue3 vite 自适应方案

两种方案&#xff1a; 1 使用 postcss-pxtorem插件 npm install postcss-pxtorem autoprefixer --save-dev # 或 yarn add postcss-pxtorem autoprefixer -D 2、postcss-px-to-viewport npm install postcss-px-to-viewport --save-dev 或 yarn add postcss-px-to-viewport -D …

华为研发投资与管理实践(IPD)读书笔记

在全球科技产业竞争日趋激烈的背景下&#xff0c;企业研发管理早已告别 “依赖个体经验、靠运气突破” 的粗放时代&#xff0c;如何将研发创新从 “偶然成功” 转化为 “可复制、可持续的必然成果”&#xff0c;成为所有追求长期竞争力的企业必须破解的命题。华为&#xff0c;作…

【LeetCode_283】移动零

刷爆LeetCode系列LeetCode第283题&#xff1a;github地址前言题目描述题目与思路分析代码实现算法代码优化LeetCode第283题&#xff1a; github地址 有梦想的电信狗 前言 本文用C实现 LeetCode 第283题 题目描述 题目链接&#xff1a;https://leetcode.cn/problems/move-z…

一文弄懂C/C++不定参数底层原理

目录 一、C语言的可变参数&#xff1a;基于栈帧的手动读取 &#xff08;1&#xff09;C函数调用的栈帧结构 &#xff08;2&#xff09;C 可变参数的 4 个核心宏&#xff1a;如何 “手动读栈” &#xff08;3&#xff09;实战代码&#xff1a;用 C 可变参数实现求和函数 &a…

【Android】【设计模式】抽象工厂模式改造弹窗组件必知必会

写一个 Android 版本的抽象工厂弹窗 Manager 管理器&#xff0c;使用 DialogFragment 实现&#xff0c;这样能更贴近真实的开发场景。结构设计 抽象产品&#xff1a;BaseDialogFragment&#xff08;继承 DialogFragment&#xff09;具体产品&#xff1a;LoginDialogFragment, …