程序占用内存很小,但docker占用内存一直膨胀

这篇具有很好参考价值的文章主要介绍了程序占用内存很小,但docker占用内存一直膨胀。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题

程序占用内存很小,但docker占用内存一直膨胀

程序占用内存很小,只有几十MB,但总内存却一直增长,疑似内存泄漏

解决过程

  1. 进入对应容器,使用top查看内存占用最多的程序,发现是我们的程序,但也仅有几十MB;
  2. 在容器运行的物理机上查看对应的docker进程内存占用,发现也仅有几十MB;
  3. 使用docker stats查看容器的内存占用,发现与监控一致,显示用了几百MB;
  4. 使用pprof分析程序,未发现内存泄漏的问题;
  5. 使用free查看内存信息,发现buffer占用内存极大;
  6. 结合My Process Used Minimal Memory, and My Docker Memory Usage Exploded | Codefresh文章,考虑是因为频繁大量写日志,导致linux系统一直未将日志文件的缓存flush到磁盘导致;
  7. 不重启服务,修改部分日志参数减少日志的打印,发现内存占用增长变慢了;
  8. 尝试执行echo 1 > /proc/sys/vm/drop_caches,刷新linux buffer,发现总内存占用下降,常驻内存未变;
    程序占用内存很小,但docker占用内存一直膨胀

解决方案

综上可知,总内存占用高并非一定是内存泄露,在该案例中总内存占用大是因为:频繁大量写日志导致linux内存页中的缓存一直被更新,linux采用最近最少使用的方式flash缓存到磁盘(猜测),因此频繁的读写导致内存中的缓存一直不释放;

  1. 此缓存是linux层面做的,等待linux自己进行处理;
  2. 使用脚本定期执行echo 1 > /proc/sys/vm/drop_caches刷新linux的缓存;

参考文章:

1. My Process Used Minimal Memory, and My Docker Memory Usage Exploded | Codefresh

2. https://stackoverflow.com/questions/71333934/kubernetes-pod-high-cache-memory-usage

3. Docker containers' memory consumption never decreases (or does it?) - Stack Overflow

4. puppeteer - docker cache memory increasing all the time - Stack Overflow

5. VIRT 过高就是内存泄漏吗? - 掘金

6. Go程序内存泄露问题快速定位 - MySpace文章来源地址https://www.toymoban.com/news/detail-486725.html

到了这里,关于程序占用内存很小,但docker占用内存一直膨胀的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • docker占用内存过高的解决方案

    环境:系统macOS13,芯片M1Pro,内存16GB 在mac环境中运行docker,则会出现内存占用过高的情况,如下图:   具体原因如下所介绍:   也就是说,docker是无法直接运行在macOS中的,虽然它们都是类unix的。故而我猜测在每次运行一个container容器时,可能都会创建一个虚拟的Linux环境

    2024年02月12日
    浏览(43)
  • Java内存占用过高问题分析

    这里我们创建一个springboot项目, 然后随便写一个contoller, 在这个controller中定义一个List集合, 然后再初始化的时候让集合中10万个字符串, 然后部署并启动项目(这里为了贴近实战, 我是在centos中启动的项目) 进入系统, 使用top命令显示系统中的进程信息, 然后点击H(大写), 以内存排

    2024年02月09日
    浏览(54)
  • 解决IDEA内存占用过高问题

    往往对于笔记本过电脑内存不够来说的用户,idea占用内存是很高的,打开idea内存直接飙升,因此我做了以下处理。 针对全栈的人来说,项目中的前端依赖包文件过多,因此扫描索引占用内存过高,主要node_modules文件夹导致的 ctrl+alt+s打开设置搜索文件类型 复制粘贴以下配置

    2024年02月04日
    浏览(51)
  • 解决VMware内存占用过高问题

    回顾多年的记录笔记方法,… VMware虚拟机使用时间一段时间后,会出现开启VMware客户机内存占用过高问题。 1、VMware cache缓存区目录占用太大空间。 2、由于VMware是跨平台的虚拟技术,在使用VMware时,VMware会定时的监测电脑的外部硬件接口,如光驱,USB,现在电脑基本没有光

    2024年02月09日
    浏览(47)
  • mysql内存占用过高的问题

    现象:在mysql运行一天之后,发现内存占用量达到总内存的百分之77,且swap被占用百分之50 问题检查如下: 第一步:开启内存使用的监控服务 第二步: 查看正常实例的使用情况 第三步: 查看内存监控表数据 第三步: 查看事件类型下的内存量 问题解决:         当事件的

    2024年02月11日
    浏览(62)
  • 阿里云虚拟主机内存占用大问题解决

    今年买了一台2核4G的主机,把4核8G的降配下来。 结果:机器没有启动任务程序,就占用2.5G内存。   阿里工程师回复: 1、top,然后按大写的M对占用内存的进程进行排序 2、free -m top: free -m 差不了多少: 查占用内存详情,前10: 阿里工程师回复2: firewalld:不需要,先停止

    2023年04月09日
    浏览(35)
  • STM32-程序占用内存大小计算

    STM32中程序占用内存容量 Keil MDK下Code, RO-data,RW-data,ZI-data这几个段: Code存储程序代码。 RO-data存储const常量和指令。 RW-data存储初始化值不为0的全局变量。 ZI-data存储未初始化的全局变量或初始化值为0的全局变量。 占用的Flash=Code + RO Data + RW Data; 运行消耗的最大RAM= RW-data+ZI-dat

    2024年02月04日
    浏览(44)
  • 解决pytorch训练的过程中内存一直增加的问题

    代码中存在累加loss,但每步的loss没加item() 以上代码会导致内存占用越来越大,解决的方法是:train_l oss[\\\'loss\\\'] += loss.item() 以及 eval_loss[\\\'loss\\\'] += loss.item()。值得注意的是,要复现内存越来越大的问题,模型中需要切换model.train() 和 model.eval(),train_loss以及eval_loss的作用是保存模

    2024年02月04日
    浏览(48)
  • Linux下内存buff/cache占用过多问题解决

    在Linux下经常会遇到buff/cache内存占用过多问题, 尤其是使用云主机的时候最严重,由于很多是虚拟内存,因此如果buff/cache占用过大的, free空闲内存就很少,影响使用; 通常内存关系是: 普通机器:total=used+free 虚拟机器:total=used+free+buff/cache 比如说用阿里云云主机,就是

    2024年02月16日
    浏览(45)
  • 【Docker】Kylin V10 下 MySQL 容器内存占用异常的解决方法

    以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号!  公众号原文链接:Kylin V10 下 MySQL 容器内存占用异常的解决方法 背景介绍 笔者在文章《MySQL 源码构建 Docker 镜像(基于 ARM 64 架构)》中曾提到

    2024年02月22日
    浏览(60)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包