Linux系统维护:增加空闲内存的大小,以便进程有足够的基础内存(空闲内存)来运行

目录

一、问题

二、解决思路

(一)问题分析

(二)思路

1. 清理缓存

2. 结束不必要的进程

3. 优化应用程序和服务

4. 增加物理内存

5、注意事项

三、实际处理

(一)结束不必要的程序

(二)清理缓存的方法

1、清理页面缓存

2、使用sync命令:

3、重启服务或系统:

4、调整内核参数:

(三)实际操作

1、操作方法

2、实际命令效果


一、问题

       我们发现在视频监控平台在web客户端查看视频的时候,超过16路视频同时进行播放的话,就会出现画面卡顿、无故停止的情况,有时候也发现链路断开的情况。

        经过研发的跟踪、调试,发现是内存消耗太大导致的。我们的系统内存大概32Gb,经过好像基本上都被像消耗完了,空闲内存只有480M左右。

       因此,研发要求增加系统内存,主要是空闲内存要足够大。

       但是系统的32G内存,其实我们的程序占用并不多,总计算下来也就3GB左右,那么多内存跑到哪里去了?

二、解决思路

(一)问题分析

       根据问题,我们第一想的不是增加物理内存,我们的系统还是比较精炼的,一般最简单的系统只需要2G内存,就可以正常使用。

       我们又看了内存的占用情况,采用如下命令

        free -m

        结果如下图:

       因此,我们把思路定在如何进行内存的转化的方法上来,就是把可用内存转化为空闲内存

(二)思路

        在Linux系统中,将可用内存转化为空闲内存并不是一个直接的操作,因为内存的管理是由操作系统内核自动进行的。可用内存是指系统可以立即分配给进程使用的内存量,而空闲内存则是没有被任何进程或系统组件使用的内存。

        但是,我们可以采取一些措施来释放被缓存或缓冲占用的内存,从而间接地增加空闲内存的量。但这样做可能会影响系统性能,因为缓存和缓冲有助于提高数据访问速度。

        以下是一些方法:

1. 清理缓存

        清理缓存通常指的是释放被系统用作缓存的内存。这些缓存通常包括文件系统的页面缓存、目录项缓存(dentries)和inode缓存。尽管缓存有助于提高系统性能,但在某些情况下,可以释放这些缓存以获取更多的空闲内存。

        清理缓存通常并不是必要的,因为Linux内核会自动管理缓存,并根据需要释放它们。但在某些性能测试、故障排查或资源监控的场景中,清理缓存可能有助于获取更一致的测试结果或观察系统行为。

2. 结束不必要的进程

        使用`top`或`htop`命令查看当前运行的进程,并结束那些占用大量内存但不必要的进程。这可以释放被这些进程占用的内存。

3. 优化应用程序和服务

        检查你的应用程序或服务是否有内存泄漏或其他内存使用不当的问题,并进行优化。这有助于减少内存的使用量,从而间接增加空闲内存。

4. 增加物理内存

        如果经常遇到内存不足的情况,考虑增加服务器的物理内存。这是解决内存问题的根本方法。

5、注意事项

        Linux系统通常会自动管理内存的使用,以最大化性能和效率。因此,在尝试释放内存之前,最好先了解系统当前的内存使用情况和性能瓶颈,避免不必要的操作。同时,清理缓存或结束进程等操作可能会影响系统的稳定性和性能,所以在进行这些操作时要谨慎,并确保你了解它们的后果。

        空闲内存并不总是越多越好。操作系统会尽量利用所有可用内存来提高性能,因此一定程度的缓存和缓冲是正常的,也是有益的。只有在确实遇到内存不足的问题时,才需要考虑采取上述措施来释放内存,本例就是实际使用发现内存不足的无奈之举。

三、实际处理

(一)结束不必要的程序

       此步骤比较简单,就不再累述。

(二)清理缓存的方法

        以下是几种清理Linux缓存的方法:

1、清理页面缓存

        通过写入/proc/sys/vm/drop_caches文件来清理页面缓存。这个文件接受几个不同的值:

        echo 1 > /proc/sys/vm/drop_caches:清理页面缓存。
        echo 2 > /proc/sys/vm/drop_caches:清理目录项和inode缓存。
        echo 3 > /proc/sys/vm/drop_caches:清理页面缓存、目录项和inode缓存。

        请注意,这些操作需要root权限。

2、使用sync命令

        在清理缓存之前,最好先运行sync命令,以确保所有挂起的文件系统写入操作都已完成并写入磁盘。这有助于避免数据丢失或损坏。

3、重启服务或系统

        虽然这不是一个常规的缓存清理方法,但重启服务或整个系统通常会释放所有缓存。然而,这种方法通常只在需要立即释放所有资源时才使用,并且会对正在运行的服务造成中断。

4、调整内核参数

        在某些情况下,我们希望调整内核参数来影响缓存的行为。例如,可以调整vm.swappiness参数来控制系统使用交换空间的倾向性。但这些更改可能会影响系统性能和稳定性,因此应该谨慎进行。

(三)实际操作

1、操作方法

        经过讨论,决定使用`sync`命令将文件系统的缓冲区数据写入磁盘,然后使用`echo`命令配合`free`命令来清理页面缓存。命令如下:

      sync; echo 1 > /proc/sys/vm/drop_caches

      这里的`drop_caches`可以设置为1(清理页面缓存)、2(清理目录项和inode缓存)、3(清理页面缓存、目录项和inode缓存)。

2、实际命令效果

       如下为实际操作效果:

root@gxdxroot-KVM:~# free -m
               total        used        free      shared  buff/cache   available
Mem:           32087        4138         589          28       27359       27455
Swap:           2047         163        1884
root@gxdxroot-KVM:~#
root@gxdxroot-KVM:~#
root@gxdxroot-KVM:~#
root@gxdxroot-KVM:~#
root@gxdxroot-KVM:~# sync; echo 1 > /proc/sys/vm/drop_caches

root@gxdxroot-KVM:~# free -m
               total        used        free      shared  buff/cache   available
Mem:           32087        4093       27089          28         904       27500
Swap:           2047         163        1884
root@gxdxroot-KVM:~#

        由此可以看出,内存转化效果非常明显,增加了26.5G的空闲内存。

        问题得到完美解决!


若想了解更多,文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨


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

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

相关文章

批量规范化(batchnormalization)

ˆB 是小批量B的样本均值,σˆ B 是小批量B的样本标准差。应用标准化后,生成的小批量的平均 值为0和单位方差为1。由于单位方差(与其他一些魔法数)是一个主观的选择,因此我们通常包含 拉伸参数(scale&#…

vulfocus靶场之redis命令执行cve-2022-0543漏洞复现

漏洞: Redis是著名的开源Key-Value数据库,其具备在沙箱中执行Lua脚本的能力。 Debian以及Ubuntu发行版的源在打包Redis时,不慎在Lua沙箱中遗留了一个对象package,攻击者可以利用这个对象提供的方法加载动态链接库liblua里的函数&…

初始化Git仓库时应该运行哪个命令?

文章目录 初始化Git仓库时,你应该运行git init这个命令。这个命令的作用是在你当前所在的目录里创建一个新的Git仓库。这样,你就可以在这个目录里开始使用Git来管理你的文件了。 下面我给你举个详细的例子来说明一下: 首先,你需要…

网络原理-IP协议

一、IP协议报头 版本号:用来表示IP协议的版本,现在常用的IP协议有两个版本,IPv4和IPv6,其他版本可能只存在于实验室中,并没有被广泛的使用。 首部长度:用来表示IP报头的长度,因为存在"选项"字段,所以IP报头是可变长的,此处单位为4…

春秋云镜 CVE-2023-51048

靶标介绍: S-CMS v5.0 被发现存在SQLI。 开启靶场 根据题目查找S-CMS v5.0漏洞,百度没有查询到,使用必应搜索S-CMS v5.0 查找到githubCVE-2023-51052的描述 S-CMS v5.0 was discovered to contain a SQL injection... CVE-2023-51052 Git…

Python程序设计 字典

教学案例十 字典 1. 判断出生地 sfz.txt文件中存储了地区编码和地区名称 身份证的前6位为地区编码,可以在sfz.txt文件中查询到地区编号对应的地区名称 编写程序,输入身份证号,查询并显示对应的地区名称 若该地区编码不在文件中,…

11.事件处理

事件处理 我们可以使用 v-on 指令 (简写为 ) 来监听 DOM 事件,并在事件触发时执行对应的 JavaScript。用法:v-on:click"methodName" 或 click"handler" 事件处理器的值可以是 内联事件处理器:事件被触发时执行的内联 J…

不同版本vue安装vue-router

vue-router 是vue官网发布的一个插件库,单页面路由。vue 和 vue-router 之间版本也需要对应。 vue2.x版本使用vue-router3.x版本,vue3.x使用vue-router4.x版本,根据自己的需要选择合适的版本 1、可以在安装前查看vue-router版本,…

微信小程序开发笔记

微信小程序开发笔记 1 微信小程序的项目结构 2 页面组成 一个微信小程序是由一个或多个页面组成的,这些页面被存放在pages目录中。下面以pages 目录下的index页面为例展示其组成部分,index页面的组成部分如下图所示。 由上图可知,index页面…

Swift-20-基础数据类型

数据定义 语法规则 先来看下下面的代码 import Cocoavar num1 "four" //a var num2: String "four" //b var num3 4 //c var num4: Int 4 //d上面的几行代码都能正常运行,其中a和b行等价,c和d行等价。区另就在于是否声…

SpringBoot集成Sleuth

引入Maven依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-sleuth</artifactId></dependency> 配置yml文件 bootstrap.yml文件增加如下配置 注&#xff1a;这个配置不是必须要&#…

嵌入式Linux开发实操(十七):Linux Media Infrastructure userspace API

视频和无线电流媒体设备使用的Linux内核到用户空间API,包括摄像机、模拟和数字电视接收卡、AM/FM接收卡、软件定义无线电(SDR)、流捕获和输出设备、编解码器设备和遥控器。典型的媒体设备硬件如下: 媒体基础设施API就是用于控制此类设备的,分五个部分。 第一部分V4L2 API…

Cpp_SDay03

何处染尘埃 文章目录 前言一、de bug二、disassembly&#xff08;代码变成汇编&#xff09;三、if loop总结 前言 重在坚持 一、de bug 消除bug&#xff08;debug&#xff09; ctrlaltm 再按1就调出了内存地址 可以在内存地址维度来看自己的赋值等 watch界面查看想查看的值 …

SpringCloud(二)

2.4、OpenFeign 请求需要的controller层代码实现跨项目的数据联调 OpenFeign是一个声明式的http客户端&#xff0c;是SpringCloud在Eureka公司开源的Feign基础上改造而来。官方地址: https:/lgithub.com/OpenFeign/feign 其作用就是基于SpringMVC的常见注解&#xff0c;帮我们优…

如何在本地创建一个新的Git仓库?

文章目录 **步骤一&#xff1a;开启项目之旅****步骤二&#xff1a;启动Git引擎****步骤三&#xff1a;验证仓库初始化情况****步骤四&#xff1a;填充项目内容****步骤五&#xff1a;保存更改——初次提交****&#xff08;可选步骤六&#xff1a;关联远程仓库并推送&#xff0…

还在找投稿邮箱?推荐一个靠谱的投稿平台给你

亲爱的朋友: 听说你还在为单位的信息宣传投稿考核而烦恼,四处寻找投稿邮箱,却屡屡碰壁,是吗?别着急,作为过来人,我想给你推荐一个靠谱的投稿平台——智慧软文发布系统网站。相信它能帮你轻松完成考核任务,让你的稿件更快更好地被媒体采纳。 想当年,我也曾像你一样,为了完成单…

分析和比较深度学习框架 PyTorch 和 Tensorflow

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 深度学习作为人工智能的一个重要分支&#xff0c;在过去十年中取得了显著的进展。PyTorch 和 TensorFlow 是目前最受欢迎、最强大的两个深度学习框架&#xff0c;它们各自拥有独特的特点和优势。 1. Py…

2024HW ---->内网横向移动

在蓝队的面试过程中&#xff0c;如果你会内网渗透的话&#xff0c;那是肯定的一个加分选项&#xff01;&#xff01;&#xff01; 那么从今天开始&#xff0c;我们就来讲一下内网的横向移动&#xff01;&#xff01;&#xff01; 目录 1.域内任意用户枚举 2.Password-Sprayi…

node的事件循环

异步同步啥的就不多说了&#xff0c;直接看node中有哪些是异步 其中灰色部分和操作系统有很大的关系&#xff0c;就不多说了&#xff0c;其中定时器属于timers队列&#xff0c;I/O操作属于poll队列&#xff0c;setImmediate属于check队列&#xff0c;其中nextTick和promise不属…

mklink 命令的使用(适用场景:C盘爆满,转移到其他盘)

一、背景 将Oracle数据库安装在D盘&#xff0c;由于磁盘爆满&#xff0c;需要将数据库转移到其他磁盘&#xff08;如&#xff1a;J盘&#xff09;。 在移动数据库之后&#xff0c;会出现数据库无法使用的情况&#xff0c;这时该如何解决&#xff1f;经了解&#xff0c;可以使用…