《Linux系列》buff/cache占用太多内存,如何释放内存?

这篇具有很好参考价值的文章主要介绍了《Linux系列》buff/cache占用太多内存,如何释放内存?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

linux buff/cache释放,Linux,linux,运维,服务器

Linux日常运维

一、Linux根据时间批量删除文件

  当遇到很多日志文件时,想要清理部分日志,但是一个一个清理太过麻烦。所以希望通过从文件时间上做逻辑判断,实现把某一时间之前的文件删除。

1 查看日志总数

ll查看所有的日志信息

wc -l统计数量

[root@zxy_master logs]# ll | wc -l
53

2 查看指定类型的日志

find查找文件命令

-name指定查找文件的名称

[root@zxy_master logs]# find ./ -name 'nifi-app*.log'
./nifi-app_2022-11-16_11.0.log
./nifi-app_2022-09-29_23.0.log
./nifi-app_2022-11-14_04.0.log
......

3 查看指定日期之前的日志

-mtime +n, 查找n天前的文件

[root@zxy_master logs]# find ./ -mtime +50 -name 'nifi-app*.log'
./nifi-app_2022-09-29_23.0.log
./nifi-app_2022-09-30_09.0.log
./nifi-app_2022-10-10_09.0.log
./nifi-app_2022-10-10_10.0.log
./nifi-app_2022-09-30_11.0.log
./nifi-app_2022-09-30_10.0.log
./nifi-app_2022-10-10_11.0.log

4 删除指定日期之前的日志

-exec 执行脚本固定写法

rm -f 删除文件(如果有目录也需要递归删除的话,可以使用rm -rf)

{} \ 固定写法

[root@zxy_master logs]# find ./ -mtime +50 -name 'nifi-app*.log' -exec rm -f {} \;
[root@zxy_master logs]# find ./ -mtime +50 -name 'nifi-app*.log'
[root@zxy_master logs]#

linux buff/cache释放,Linux,linux,运维,服务器

二、buff/cache占用太多内存,如何释放内存?

1.查看free内存

  根据free -h命令,可以看到内存共有7.6G用了623M,但是free只有2.7G。通过观察可以发现buff/cache占用了4.3G。 buff/cache是由于系统读写导致的文件缓存,没有及时释放。

[root@zxy_master ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           7.6G        623M        2.7G         15M        4.3G        6.7G
Swap:            0B          0B          0B

2.buff/cache

buff是Buffer Cache,即缓冲区缓存。主要是针对块设备的缓存。

cache是Page Cache,即页面缓存。主要用来作为文件系统上的文件数据的缓存来用,尤其是针对当进程对文件read/write操作的时候。

Linux缓存回收机制是,Linux内核会在内存将要耗尽的时候,触发内存回收的工作,以便释放出内存给进程是哟个。一般情况下,释放的这部分内存都是来自于buff/cache部分。

3.手动释放buff/cache

# 清除页面缓存
[root@zxy_master ~]# echo 1 > /proc/sys/vm/drop_caches
# 清除回收slab分配中的对象(包括目录项和inode缓存)
[root@zxy_master ~]# echo 2 > /proc/sys/vm/drop_caches
# 清除页面缓存和slab分配中
[root@zxy_master ~]# echo 3 > /proc/sys/vm/drop_caches
# 释放后内存,可以看到现在可用内存有6.9G
[root@zxy_master ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           7.6G        627M        6.9G         15M        121M        6.8G
Swap:            0B          0B          0B

三、修改Linux系统时间

  在修改Linux系统时间的时候,最好修改系统时间和CMOS时间。系统时间是由Linux操作系统维护的;CMOS时间是CMOS芯片保存的时间;系统启动时,会从CMOS读取时间记录为当前系统时间,同时操作系统也会每隔一段时间将操作系统写入CMOS中。如果使用date命令修改系统事件后,进行了系统重启操作,那么修改后的时间还没同步到CMOS中。重启的时候,系统会从CMOS中读取修改前的时间。所以最好是在修改系统时间后,同时更新一下CMOS时间。

1.修改系统时间

1.1 修改日期和时间

日期和时间之间需要使用空格分开

[root@zxy_master ~]# date
Sat Nov 26 21:01:57 CST 2022
[root@zxy_master ~]# date -s "2022-11-25 21:01:57"
Fri Nov 25 21:01:57 CST 2022
[root@zxy_master ~]# date
Fri Nov 25 21:01:58 CST 2022

1.2 修改日期不修改时间

[root@zxy_master ~]# date
Sat Nov 25 21:02:52 CST 2022
[root@zxy_master ~]# date -s "2022-11-26"
Sat Nov 26 21:03:13 CST 2022
[root@zxy_master ~]# date
Sat Nov 26 21:03:30 CST 2022

1.3 修改时间不修改日期

[root@zxy_master ~]# date
Sat Nov 26 21:03:52 CST 2022
[root@zxy_master ~]# date -s "21:06:00"
Sat Nov 26 21:06:00 CST 2022
[root@zxy_master ~]# date
Sat Nov 26 21:06:02 CST 2022

2.写入CMOS

  通过上面的date -s命令,只是修改了Linux的系统时间,但是CMOS中的时间可能还没改变,所以需要使用clock -w命令把当前系统时间写入到CMOS中。

[root@zxy_master ~]# clock --show
Sun 26 Nov 2022 21:03:29 PM CST  -0.894806 seconds
[root@zxy_master ~]# clock -w
[root@zxy_master ~]#
Sat Nov 26 21:06:30 CST 2022

四、Linux进程显示 – process information unavailable

1.linux服务器JPS查看进程

– process information unavailable
linux buff/cache释放,Linux,linux,运维,服务器

2.原因

在一个用户下启动的进程,使用另一个用户kill这个进程导致的

3.解决

cd /tmp
hsperfdata_用户名

linux buff/cache释放,Linux,linux,运维,服务器

打开后发现有个16501文件,刚好跟jps查看进程的进程ID一样

linux buff/cache释放,Linux,linux,运维,服务器

rm -rf 16501
再查看进程后,已经正常
所以下次尽量用哪个用户启动的进程,在不使用的时候使用该用户关闭该进程

linux buff/cache释放,Linux,linux,运维,服务器

五、linux系统之您在 /var/spool/mail/root 中有新邮件

问题名称:

您在 /var/spool/mail/root 中有新邮件

[root@hadoop vhost]# cd /
您在 /var/spool/mail/root 中有新邮件

解决方案:

## 打开系统配置文件
[root@hadoop /]# vim /etc/profile
## 在文件末尾添加这条语句
unset MAILCHECK
## 更新配置文件
[root@hadoop /]# source /etc/profile

六、Linux中的网络工具nc和telnet

1.安装

[root@hadoop ~]# yum -y install nc
[root@hadoop ~]# yum -y install telnet

2.连接方式

[root@hadoop ~]# nc -lk ***.***.**.** 9999

[root@hadoop ~]# telnet ***.***.**.** 9999

3.作用

可用于模拟生产端生产数据,通过ip 和 端口进行通信
这两种不同点在于,nc是把数据推过去,telnet是生产好数据等对方来拉取
所以在代码端使用nc比较合适
例如这样的代码,在代码的接收数据

//结构流
val ds: Dataset[String] = spark.readStream.format("socket")
            .option("host", "***.***.**.**")
            .option("port", "9999")
            .load()
            .as[String]

案例:结构流WordCount

行为数据发送到kafka之后,使用Spark Strctured Streaming消费数据落地到hudi。因为Strctured Streaming是基于spark sql的流。因为它底层直接操作的DataFrame/DataSet。这个流在使用其实和spark sql差不多。
Strctured Streaming相较于spark streaming的进步,就好比是RDD到DataFrame的进步。文章来源地址https://www.toymoban.com/news/detail-559787.html

package hudi

import org.apache.spark.sql.streaming.OutputMode
import org.apache.spark.sql.{Dataset, SparkSession}

object StructedStreaming {
    def main(args: Array[String]): Unit = {
        
        System.setProperty("HADOOP_USER_NAME","root")
        val spark: SparkSession = SparkSession.builder()
            .appName("StructedStreaming")
            .master("local[*]")
            .config("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
            .getOrCreate()
        spark.sparkContext.setLogLevel("ERROR")
        import spark.implicits._
    
        val ds: Dataset[String] = spark.readStream.format("socket")
            .option("host", "****.****.***.***")
            .option("port", "9999")
            .load()
            .as[String]
        val WcDs: Dataset[(String, Long)] = ds.flatMap(_.split("\\s+")).map((_,1)).groupByKey(_._1).count()
        
        WcDs.writeStream.outputMode(OutputMode.Complete())
            .format("console")
            .start()
            .awaitTermination()
    }
}

到了这里,关于《Linux系列》buff/cache占用太多内存,如何释放内存?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • linux缓冲区(buff/cache)内存占用过高解决办法

    1.查看当前内存剩余 2.发现free剩余很少,buff/cache占用很高 3.安装hcache查看谁在占用 3.发现是journal这个东西,这是linux系统日志,出现这种情况,一般是日志没有配置好 查看配置文件 将Storage=persistent 重启日志服务 手动清理缓存区 再次free -m 查看

    2024年01月18日
    浏览(46)
  • Centos 系统内存 buff/cache 占用过多

    查看Centos内存使用情况: free -h 在云服务器上,total = used + free + buff/cache Linux内核会在内存将要耗尽的时候,触发内存回收的工作,以便释放出内存给急需内存的进程使用。一般情况下,这个操作中主要的内存释放都来自于对buffer/cache的释放。 还可以使用下面这个文件来人工

    2024年02月16日
    浏览(43)
  • Linux 定时清理buff/cache

    总所周知,linux系统下的内存一直都不够用,特别是对于一些WEB网站而言,特别是针对一些小型服务器,内存一下子就占满了 通过我们用free -h 查询内存的占用大小时,总会发现buff/cache暂用过大 解决的方法一般可以直接清理 或者定时清理 选择其中一个清理就行了,例如    

    2024年02月09日
    浏览(42)
  • Linux清除缓存buff/cache

    使用free -h 查看内存情况发现buff/cache缓存占用太多了 导致我hive都跑不动 原因: buff/cache是由于系统读写导致的文件缓存,没有及时释放 办法:清除缓存 跑这三个命令就可以了 高级办法 这里可以写个脚本来自动定时清除缓存,新建一个脚本 touch cleanBuffCache.sh 给定义的脚本赋

    2023年04月23日
    浏览(76)
  • 在Linux中清理Buff/cache

    在 Linux 中,缓冲区和缓存是为提高系统性能而保留的,但如果这些缓存过多,可能会消耗大量内存,影响系统的性能。有时候,您可能需要手动清理这些缓存以释放内存。但请注意,通常不建议定期或频繁地这样做,因为这样做可能会对系统性能产生负面影响。 以下是清理

    2024年02月03日
    浏览(54)
  • Linux清理buff/cache的方法

    一、buff/cache是什么? 在Linux系统中,buff/cache是内存中用于缓存文件系统I/O、网络I/O的缓存,如果应用程序需要内存,buff/cache可以根据系统需要释放缓存。buff/cache机制可以优化Linux系统的性能。 buff/cache在系统内存充足的情况下非常有利,可以加快系统I/O操作,但是如果内存

    2024年02月03日
    浏览(31)
  • Docker目录占用了太多空间, 如何减少占用?

    如果你的Docker目录占用了太多空间,你可以尝试以下几种方法来减少它的大小: 删除不再使用的镜像、容器、数据卷和网络。你可以使用sudo  docker system prune 命令来删除所有未使用的对象。 清理日志文件。Docker容器会生成日志文件,这些文件可能会占用大量空间。你可以定

    2024年02月17日
    浏览(43)
  • Sql Server 占用内存高,不释放内存,数据库连接不上 问题处理记录

    项目上反应生产线箱码不能上传到我们系统,我们的WMS软件退出后重新登录也一直登录失败,并且服务器上数据库占用内存过高,SSMS数据库连接不上。 好家伙SQL Server占用了34个G内存。 接口日志中连接数据库报错:System.Data.SqlClient.SqlException: 当前命令发生了严重错误。应放弃

    2024年02月14日
    浏览(74)
  • 【Linux】cache不被释放的几种情况

    在Linux系统中,我们经常用free命令来查看系统内存的使用状态。在一个RHEL6的系统上,free命令的显示内容大概是这样一个状态: 这里的默认显示单位是kb,我的服务器是128G内存,所以数字显得比较大。这个命令几乎是每一个使用过Linux的人必会的命令,但越是这样的命令,似

    2024年02月10日
    浏览(41)
  • Linux如何查看当前占用CPU和内存最多的进程

    查看占用 CPU 最高的前10个进程 查看占用内存(MEM)最高的前10个进程 输入 top 命令,然后按下大写M按照内存MEM排序,按下大写P按照CPU排序

    2024年02月17日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包