OOM了?物理内存不够了?试试这个方法来提升内存容量,不花钱的

news2024/11/16 8:19:43

通过增加虚拟内存来提高内存使用

本文解决的实际问题:

当我们物理内存小的时候,会出现OOM,然后服务自动死掉的情况。因为物理内存大小是固定的,有没有其他好的办法来解决呢?这里我们可以适当调整Linux的虚拟内存来协作。

问题描述:

最近遇到一个情况,物理内存不够,导致项目一两天就自动死掉了。服务器物理内存就2GB,上面有好多服务,但是,又不能停,导致一个新上的项目,总是过一两天就自己死掉了。查看启动情况:

添加虚拟内存前,服务重启情况

从上图中,我们可以看到服务重启的频率,是不是相当的高了。解决这种情况,可以有以下两种方案

一、使用脚本定时查询,如果指定服务没有启动,就执行重启动作;

二、能否使用虚拟内存解决呢?

其实第一种方案,凯哥(凯哥Java:kaigejava)也尝试过了。最后还是选择试试第二种方案:提高虚拟内存大小,来解决物理内存捉襟见肘的情况呢?

在使用虚拟内存前,我们先来看看,当前服务器默认的虚拟内存的使用情况,使用top命令查看:

添加虚拟内存前Swap使用情况

从上图中,我们可以看到,swap区域的默认大小是1GB的,可用空间为0.这说明,交换区域已经被占满了,看来是需要提高swap区大小了。

在使用方案二之前,我们先来介绍以下基础知识:什么是虚拟内存?虚拟内存有什么作用?

虚拟内存是什么?

虚拟内存是一种计算机内存管理技术,它通过将磁盘空间作为辅助存储器来扩展物理内存(RAM),从而提供更大的可用内存空间。其主要作用包括:

有什么作用?

1.扩展可用内存空间: 当物理内存不足以同时容纳运行的所有程序和操作系统所需的数据时,虚拟内存允许操作系统将部分数据移到硬盘上,从而释放物理内存。

2.提供内存抽象: 虚拟内存为每个进程提供了一个独立的、连续的地址空间,使得每个进程感觉自己独占了整个内存。实际上,这些地址可能对应于物理内存中的不同位置,也可能在硬盘上的交换文件中。

3.方便内存共享: 多个进程可以共享相同的虚拟内存地址,而不必实际共享物理内存。这使得进程之间的通信和数据共享更为灵活。

需要注意事项:

对于物理内存较小的实体机,提高虚拟内存空间的确可以对程序运行产生一些帮助,但也有一些注意事项:

a.性能开销 使用虚拟内存会引入性能开销,因为从硬盘读写数据比从物理内存读写数据慢得多。过多地依赖虚拟内存可能会导致性能下降。

b.交换空间 当系统需要释放物理内存时,它会将不常用的数据移到交换文件(虚拟内存)中。如果过度使用交换空间,可能导致硬盘I/O过多,进而影响性能。

总结:

总体而言,虚拟内存是一种在有限物理内存情况下提供更大内存空间的有效手段,但过度使用虚拟内存可能会导致性能问题。在真实的环境中,合理配置虚拟内存大小,结合物理内存和系统负载进行调优,是确保系统平稳运行的关键。

好了,通过上面介绍,我们知道了,虚拟内存是什么了,那么接下来我们,需要思考的是,Linux操作系统下怎么扩大交换区呢?

在Linux系统下怎么创建和启用一个swap file,来提供额外的虚拟内存空间呢?

步骤如下:

  1. 在指定目录中创建指定大小的文件,这个文件将被用作交换文件。命令:

sudo fallocate -l 2G /home/swapfile

上面这条命令解读:

用于通过fallocate命令在/home目录下创建一个2GB大小的文件,这个文件将被用作交换文件。

2. 设置第一步文件的权限。命令:

sudo chmod 600 /home/swapfile

命令解读:

设置刚创建的交换文件的权限,将其设置为只有拥有者(owner)有读写权限,没有其他用户或组的权限。

3.将第一步创建的文件设置为Linux交换空间(swap)格式的文件。命令:

sudo mkswap /home/swapfile

解读:

使用mkswap命令将指定文件格式化为Linux交换空间(swap)。

4.将文件设置成系统一部分,用以提供额外虚拟内存。命令:

sudo swapon /home/swapfile

解读:

启用刚刚创建的交换文件,使其成为系统的一部分,以提供额外的虚拟内存。

5.设置系统启动时候自动启用交换文件。命令:

echo '/home/to/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

命令解读:

将一行配置添加到/etc/fstab文件中,该配置用于在系统启动时自动启用交换文件。这个文件系统表(fstab)中的条目指定了系统如何挂载各个文件系统和设备。

通过上面五个步骤之后,我们就创建了一个在home文件夹下,大小为2GB的swapfile虚拟空间了。

我们先来使用top命令查看swap情况:

添加虚拟内后,Swap区使用情况

使用free -h命令,来看看,虚拟空间使用情况:

查看Swap区已经使用和未使用情况

通过free -h命令,看到,虚拟内存由1GB,变成了2GB.说明我们新增加的2GB虚拟内存添加成功了。

下面是创建虚拟文件并指定的完整命令。

sudo fallocate -l 2G /home/swapfile
sudo chmod 600 /home/swapfile
sudo mkswap /home/swapfile
sudo swapon /home/swapfile
echo '/home/to/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

说明:

请用上面命令,请修改成自己实际的路径

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

服务号可以升级订阅号吗

服务号和订阅号有什么区别?服务号转为订阅号有哪些作用?很多小伙伴想把服务号改为订阅号,但是不知道改了之后具体有什么作用,今天跟大家具体讲解一下。首先我们知道服务号一个月只能发四次文章,但是订阅号每天都可以发…

Hdoop学习笔记(HDP)-Part.18 安装Flink

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

注意力机制及Transformer-3GPT版

#pic_center R 1 R_1 R1​ R 2 R^2 R2 目录 知识框架No.1 自注意力机制(self-attention)一、输入的种类以及表示1、输入是a vector2、输入是a set of vectors(一段文字)3、输入是a set of vectors(一段音频)4、输入是a set of vectors(一段图谱)5、输入是a set of vectors(一个…

什么是CAS, 什么是AQS

文章目录 什么是CAS, 什么是AQSCASAQS 什么是CAS, 什么是AQS CAS AQS AQS 全称是AbstractQueuedSynchronizer, 是juc 下一个核心的抽象类,用于构建各种同步器和锁 比如我们熟悉的 ReentrantLock、ReadWriteLock、CountDownLatch等等是基于AQS. 首先在…

知识蒸馏测试(使用ImageNet中的1000类dog数据,Resnet101和Resnet18分别做教师模型和学生模型)

当教师网络为resnet101,学生网络为resnet18时: 使用蒸馏方法训练的resnet18训练准确率都小于单独训练resnet18,使用蒸馏方法反而导致了下降。当hard_loss的alpha为0.7时,下降了1.1 当hard_loss的alpha为0.6时,下降了1.7说明当学生…

51单片机的智能加湿器控制系统【含proteus仿真+程序+报告+原理图】

1、主要功能 该系统由AT89C51单片机LCD1602显示模块DHT11湿度传感器模块继电器等模块构成。主要适用于智能自动加湿器、湿度保持、湿度控制等相似项目。 可实现基本功能: 1、LCD1602液晶屏实时显示湿度信息 2、DHT11采集湿度 3、按键可以调节适宜人体湿度的阈值范围&#xff0…

TCP_报文格式解读

报文格式 header部分字段含义解析 固定字段 对于header中固定部分字段含义,见之前的blog《TCP报文分析》; 对部分字段含义补充说明 Data Offset:4bit,tcp header的长度,单位:32bit(4字节&…

正则表达式从放弃到入门(1):“正则表达式”是什么?

正则表达式从放弃到入门(1):“正则表达式”是什么? 本博文转载自 这是一篇”正则表达式”扫盲贴,如果你还不理解什么是正则表达式,看这篇文章就对了。 如果你已经掌握了”正则表达式”,就不用再…

如何使用windows Terminal终端连接远程Linux服务器

近接触到了zsh这个shell,所以在ubuntu系统上反复折腾,终于在ubuntu-desktop系统上使用oh-my-zsh和powerlevel10k配置好了一个比较好看的终端(个人认为挺好看,勿喷)。 但是在从windwos的Mobaxterm登录ubuntu查看时&…

用Java写一个王者荣耀游戏

目录 sxt包 Background Bullet Champion ChampionDaji GameFrame GameObject Minion MinionBlue MinionRed Turret TurretBlue TurretRed beast包 Bear Beast Bird BlueBuff RedBuff Wolf Xiyi 打开Eclipse创建图片中的几个包 sxt包 Background package sxt;…

思维模型 系列位置效应

本系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知。重视首尾。 1 系列位置效应 1.1 系列位置效应在教育领域的应用 在一堂英语课上,老师先让学生学习了一篇英语文章,然后在文章的结尾部分强调了一些重要的单词和语法…

【数据结构】循环链表和双向链表

【循环链表】 (有头结点) pR1->next; R1->nextR2->next->next; free(R2->next); R2->nextp; 例&#xff1a;对于两个单循环链表a&#xff0c;b&#xff0c;将其连接起来&#xff0c;变成一个单循环链表 #include<stdio.h> #include<stdlib.h> …

nodejs的安装和验证

1.浏览器访问nodejs官网&#xff0c;根据操作系统选择对应版本的安装文件&#xff0c;如下图所示&#xff1a; 2.双击下载的安装文件&#xff0c;点击“Next”&#xff0c;如下图所示&#xff1a; 3.勾选“I accept the terms in the License Agreement”&#xff0c;然后点击“…

某公司前端笔试题(12.30)

1、对象数组去重&#xff1a; 数组去重&#xff1a; const a[{a:1,b:2},{a:2},{a:2},{a:1,c:3},{b:2,a:1}] 结果&#xff1a;[{a:1,b:2},{a:2},{a:1,c:3}] // 判断两个对象的属性值是否一致 const a [{ a: 1, b: 2 }, { a: 2 }, { a: 2 }, { a: 1, c: 3 }, { b: 2, a: 1 }] co…

ZooKeeper 如何保证数据一致性?

在分布式场景中&#xff0c;ZooKeeper 的应用非常广泛&#xff0c;比如数据发布和订阅、命名服务、配置中心、注册中心、分布式锁等。 ZooKeeper 提供了一个类似于 Linux 文件系统的数据模型&#xff0c;和基于 Watcher 机制的分布式事件通知&#xff0c;这些特性都依赖 ZooKee…

如果你想成为一名提示词工程师(Prompt Engineer),这款工具你不能错过

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 前言 我们知道&#xff0c;如果想要通过AI得到更好更精确的答案&#xff0c;那么提示词Prompt的好坏至关重要。 因此&#xff0c;提示词工程师这个岗位应运而出。…

【PUSDN】WebStorm中报错Switch language version to React JSX

简述 WebStorm中报错Switch language version to React JSX 可能本页面的写法是其他语法。所以可以不用管。 测试项目&#xff1a;ant design vue pro 前情提示 系统&#xff1a; 一说 同步更新最新版、完整版请移步PUSDN Powered By PUSDN - 平行宇宙软件开发者网www.pusdn…

连接器信号完整性仿真教程 九

前面几篇博文介绍了用CST Studio Suite做连接器信号完整性仿真的基本操作步骤、方法、技巧。本文介绍用Ansys HFSS做连接器信号完整性仿真的基本操作布置。将以 B to B Connector为实例&#xff0c;Step By Step详细讲解Ansys HFSS连接器信号完整性仿真操作步骤。 打开ANSYS E…

Java开发实战(一):Java环境安装

工欲善其事&#xff0c;必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前&#xff0c;我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置&#xff0c;我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环…

httpd软件

目录 一.什么是http 二.访问浏览器的过程 三.http的协议版本 四.http的常见配置 一.什么是http 万维网&#xff1a;是数据库&#xff0c;存放链接关系的&#xff0c;例存放baidu-->jd的链接 URL&#xff1a;描述文件的具体位置&#xff0c;一个资源在服务器的具体位置…