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

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

本文解决的实际问题:

当我们物理内存小的时候,会出现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.mzph.cn/news/191792.shtml

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

相关文章

互联网产品经理常用的ChatGPT通用提示词模板

产品规划和设计:请帮助我规划和设计一款互联网产品,包括市场调研、用户需求分析、产品功能设计、产品原型设计等方面的内容,以便我能够更好地满足用户需求并开发出优秀的产品。 产品开发和迭代:请帮助我进行互联网产品的开发和迭…

如何在 vue 项目中创建 svg 组件

在Vue项目中,SVG是一种非常常见的图像形式。与传统的矢量图像不同,SVG可以设置可缩放且清晰度高的图像形式。Vue使得使用SVG组件非常容易,本文将介绍如何在Vue项目中创建SVG组件。 步骤1:创建SVG文件 要创建SVG组件,…

更改Jupyter Notebook 默认存储路径

import osprint(os.path.abspath(.)) 然后打开cmd,输入: jupyter notebook --generate-config 按照路径在本地文件夹中找到那个文件。 然后找到"c.NotebookApp.notebook_dir"这条语句:(直接通过"crtlf"输入关键字找阿 …

vue 使用decimal.js 解决小数相加合计精确度丢失问题

安装依赖 decimal.js npm install --save decimal.js 封装 在utils文件夹下创建decimal.js文件 import { Decimal } from decimal.js export function add (x, y) {if (!x) {x 0}if (!y) {y 0}const xx new Decimal(x)const yy new Decimal(y)return xx.plus(yy).toNumbe…

【哈希】1.两数之和

题目&#xff1a;https://leetcode.cn/problems/two-sum/description/?envTypestudy-plan-v2&envIdtop-100-liked class Solution {public int[] twoSum(int[] nums, int target) {Map<Integer, Integer> map new HashMap<>();for (int i 0; i < nums.l…

mysql常见配置文件参数

1)mysql常用配置文件参数 MySQL的配置文件通常位于安装目录下的 my.cnf 或 my.ini 文件中。在Unix/Linux操作系统上&#xff0c;MySQL配置文件被命名为 my.cnf。在Windows操作系统上&#xff0c;MySQL配置文件被命名为 my.ini。 [mysqld] max_connections&#xff1a;该参数定…

JAVA-每一页PDF转图片

结论&#xff1a;1、iText几乎找不到如何PDF转图片的信息&#xff0c;但能找到获取到PDF里面的图片并保存下来的信息&#xff1b;2、PDF box满大街都是参考代码&#xff08;下面会附上一个作为参考&#xff09;&#xff1b;3、收费的库使用起来更简单&#xff0c;但就是要收费&…

微机原理——定时器学习1

目录 定时类型 8253内部结构框图 8253命令字 六种工作方式及输出波形 计数初值的计算与装入 8253的初始化 定时类型 可编程定时器8253&#xff1a;&#xff08;内部采用的是16位 减法计数器&#xff09; 8253内部结构框图 8253命令字 8253有三个命令字&#xff1a;方式命…

C++11 类的新功能

新的默认成员函数 C11在6个默认成员函数基础上又加了两个:移动构造函数和移动赋值函数 针对移动构造函数和移动赋值运算符重载有一些需要注意的点如下&#xff1a; 小结&#xff1a; &#xff08;1&#xff09; 生成默认移动构造的条件比较严苛&#xff1a;必须是没有实现析…

Hdoop学习笔记(HDP)-Part.07 安装MySQL

目录 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 …

YOLOv8改进 | 2023 | 给YOLOv8换个RT-DETR的检测头(重塑目标检测前沿技术)

一、本文介绍 本文给大家带来是用最新的RT-DETR模型的检测头去替换YOLOv8中的检测头。RT-DETR号称是打败YOLO的检测模型&#xff0c;其作为一种基于Transformer的检测方法&#xff0c;相较于传统的基于卷积的检测方法&#xff0c;提供了更为全面和深入的特征理解&#xff0c;将…

Java实现学生分数的最小差值

Java实现学生分数的最小差值 01 分类 数组 02 题目 给你一个 下标从 0 开始 的整数数组 nums &#xff0c;其中 nums[i] 表示第 i 名学生的分数。另给你一个整数 k 。 从数组中选出任意 k 名学生的分数&#xff0c;使这 k 个分数间 最高分 和 最低分 的 差值 达到 最小化 …

【从删库到跑路 | MySQL总结篇】事务详细介绍

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】&#x1f388; 本专栏旨在分享学习MySQL的一点学习心得&#xff0c;欢迎大家在评论区讨论&#x1f48c; 目录 一、事务…

学习TypeScrip3(接口和对象类型)

对象的类型 在typescript中&#xff0c;我们定义对象的方式要用关键字interface&#xff08;接口&#xff09;&#xff0c;我的理解是使用interface来定义一种约束&#xff0c;让数据的结构满足约束的格式。定义方式如下&#xff1a; 使用接口约束的时候不能多一个属性也不能少…

逻辑回归 正则化

正则化 过拟合问题 对于模型&#xff0c;如果一个模型对于数据的偏差很大&#xff0c;不能能够很好的拟合数据的分布&#xff0c;称为欠拟合&#xff0c;或者说这个算法具有高偏差的特性。 如果一个模型虽然可以穿过所有的数据点&#xff0c;但是其图像波动很大&#xff0c;其…

分享86个节日PPT,总有一款适合您

分享86个节日PPT&#xff0c;总有一款适合您 86个节日PPT下载链接&#xff1a;https://pan.baidu.com/s/1J09nhufX_3gvT2XxZkKz6Q?pwd6666 提取码&#xff1a;6666 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不易…

【华为OD题库-044】跳房子1-java

题目 跳房子&#xff0c;也叫跳飞机&#xff0c;是—种世界性的儿童游戏&#xff0c;游戏参与者需要分多个回合按顺序跳到第1格直到房子的最后—格。跳房子的过程中&#xff0c;可以向前跳&#xff0c;也可以向后跳。 假设房子的总格数是count&#xff0c;小红每回合可能连续跳…

Paxos 算法

Paxos 算法 介绍 Paxos 算法是第一个被证明完备的分布式系统共识算法。共识算法的作用是让分布式系统中的多个节点之间对某个提案&#xff08;Proposal&#xff09;达成一致的看法。提案的含义在分布式系统中十分宽泛&#xff0c;像哪一个节点是 Leader 节点、多个事件发生的…

每天五分钟计算机视觉:AlexNet网络的结构特点

本文重点 在前面的一篇文章中&#xff0c;我们对AlexNet网络模型的参数进行了详细的介绍&#xff0c;本文对其网络模型的特点进行总结。 特点 1、AlexNet的网络结构比LeNet5更深&#xff0c;模型包括5个卷积层和3个全连接层。参数总量大概为249MB。 2、Alex使用了ReLu激活函…

基于Java SSM 学生宿舍管理系统

学生宿舍是同学最为熟悉的领域&#xff0c;假定学校有多栋宿舍楼&#xff0c;每栋楼有多层&#xff0c;每层有多个寝室&#xff0c;每个寝室可住多名学生&#xff0c;学生宿舍管理系统对学校的学生宿舍进行规范管理&#xff0c;其管理的对象及操作如下&#xff1a; 宿舍信息&am…