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 -mtotal        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_cachesroot@gxdxroot-KVM:~# free -mtotal        used        free      shared  buff/cache   available
Mem:           32087        4093       27089          28         904       27500
Swap:           2047         163        1884
root@gxdxroot-KVM:~#

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

        问题得到完美解决!


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


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

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

相关文章

4.21java聊天室项目小结

基本完成了用户的登录注册功能,可以实现用户账号登录和邮箱登录功能,忘记密码通过邮箱发送验证码找回,注册账号功能,并传递给客户端更新数据库的表内容 注册功能: 注册成功后密码进行MD5加密并通过服务器保存到数据库…

【FFmpeg】视频与图片互相转换 ( 视频与 JPG 静态图片互相转换 | 视频与 GIF 动态图片互相转换 )

文章目录 一、视频与 JPG 静态图片互相转换1、视频转静态图片2、视频转多张静态图片3、多张静态图片转视频 二、视频与 GIF 动态图片互相转换1、视频转成 GIF 动态图片2、 GIF 动态图片转成视频 一、视频与 JPG 静态图片互相转换 1、视频转静态图片 执行 ffmpeg -i input.mp4 …

node和go的列表转树形, 执行速度测试对比

保证数据一致性,先生成4000条json数据到本地,然后分别读取文本执行处理 node代码 node是用midway框架 forNum1:number 0forNum2:number 0//执行测试async index(){// 生成菜单列表// const menuList await this.generateMenuList([], 4000);const men…

2024年腾讯云免费服务器最新申请入口链接

腾讯云免费服务器申请入口 txybk.com/go/free 免费服务器可选轻量应用服务器和云服务器CVM,轻量配置可选2核2G3M、2核8G7M和4核8G12M,CVM云服务器可选2核2G3M和2核4G3M配置,腾讯云百科txybk.com分享2024年最新腾讯云免费服务器申请入口、限制…

【数值计算方法】4 / 数值积分

一、理解插值 二、几种理解方式: 1、对插值函数进行积分得到; 2、使用另一个函数近似;(三角函数、指数函数都是可以的...) 3、使用拉格朗日插值;----代数精度法(权和为1) 三、

深度神经网络(DNN)

通过5个条件判定一件事情是否会发生,5个条件对这件事情是否发生的影响力不同,计算每个条件对这件事情发生的影响力多大,写一个深度神经网络(DNN)模型程序,最后打印5个条件分别的影响力。 示例 在深度神经网络&#xf…

【深度学习】Dropout、DropPath

一、Dropout 1. 概念 Dropout 在训练阶段会让当前层每个神经元以drop_prob( 0 ≤ drop_prob ≤ 1 0\leq\text{drop\_prob}\leq1 0≤drop_prob≤1)的概率失活并停止工作,效果如下图。 在测试阶段不会进行Dropout。由于不同批次、不同样本的神…

open Gauss 数据库-06 openGauss数据库安全指导手册5.0.0

发文章是为了证明自己真的掌握了一个知识,同时给他人带来帮助,如有问题,欢迎指正,祝大家万事胜意! 目录 前言 openGauss数据库安全指导 1 用户权限控制 1.1 实验介绍 1.1.1 关于本实验 1.1.2 实验目的 1.2 用户…

初识ansible变量及实例配置

目录 1、为什么要使用变量 2、变量分类 3、 变量详解 3.1 vars,vars_files , group_vars 3.1 .1 vars 剧本中定义变量 3.1.2 vars_file 将变量存放到一个文件中,并在剧本中引用 3.1.3 group_vars 创建一个变量文件给某个组使用 实例1-根据不同的主机…

如何在PostgreSQL中使用pg_stat_statements插件进行SQL性能统计和分析?

文章目录 一、启用pg_stat_statements插件二、查看统计信息三、定期重置统计信息四、注意事项 PostgreSQL中的pg_stat_statements是一个强大的插件,用于追踪执行时间最长的SQL语句。通过它,我们可以获取有关SQL语句执行频率、总执行时间、平均执行时间等…

四.RocketMQ的几种消息发送方式应用

RocketMQ的几种消息发送方式应用 一:普通消息1)发送同步消息2)发送异步消息3)单向发送消息4)消费消息-负载均衡模式5)消费消息-广播模式 二:顺序消息1.顺序消息指的是:严格按照消息的发送顺序进…

【免费源码下载】完美运营版商城 虚拟商品全功能商城 全能商城小程序 智慧商城系统 全品类百货商城php+uniapp

简介 完美运营版商城/拼团/团购/秒杀/积分/砍价/实物商品/虚拟商品等全功能商城 干干净净 没有一丝多余收据 还没过手其他站 还没乱七八走的广告和后门 后台可以自由拖曳修改前端UI页面 还支持虚拟商品自动发货等功能 挺不错的一套源码 前端UNIAPP 后端PHP 一键部署版本&am…