docker容器中的内存占用高的问题分析
文章目录
- 问题描述
- 原因分析
- 分析1
- 分析2
- 验证猜想
- 结论和经验
问题描述
运维新增对某服务的监控后发现:内存不断上涨的现象。进一步确认,是因为有多个导出日志操作导致的内存上涨问题。
进一步的测试得出的结果是:容器刚启动是占用内存约为50M左右,在多次地导出日志操作后,内存能涨到2G以上。
问题:为什么日志导出会导致容器的内存不断上涨?
原因分析
分析1
在宿主机器中,使用docker stats 查看服务,内存占用内存792MB
在docker 容器中,通过ps aux命令查看容器中使用的总内存=29MB+147MB+139MB=315MB左右
使用kill命令杀死服务的workerman子进程(父进程不跑业务,并且在容器中杀不死),可以看到:
- workerman子进程重新拉起后内存24MB+21MB=45MB,重新拉起后的进程内存占用减少239MB
- doker stats 内存在kill后的内存减少了229MB
猜测:容器中只有wokerman的子进程会在执行导出后占用内存,并且使用ps命令也没有看到其他进程。怀疑:容器本身存在缓存,并且docker stat命令查看的内存值应该包含这部分缓存的内存。
分析2
使用docker stat查看容器的内存使用为:666MB
在容器中,使用htop命令查看容器中各个进程的总内存约为:27MB+118MB+85MB = 230MB左右(包含部分的代码缓存等)
在 /sys/fs/cgroup/memory/docker//memory.stat 中查看内存情况
验证猜想
为了验证确实是 cache占用的内存,我们手动清理cache缓存验证一下,如下
运行以下命令可以清理 PageCache:
- sudo sh -c “echo 1 > /proc/sys/vm/drop_caches” (这将清空 PageCache 中的缓存数据,但不会影响正在使用的程序数据。)
可以看到,docker stats 的内存也从 666.MB降到了182MB,和 /sys/fs/cgroup/memory/docker//memory.stat 中查看内存情况基本一致。
结论和经验
结论:不是代码中的内存泄露,是cache缓存占用的内存。
经验:
ps aux
查看的RSS只包含了物理内存,不包含buffer/cache
内存- 使用docker stats 命令查看到的内存数据不是实际上的物理内存,而是包含了cache部分,使用该数据用于监控不一定准确。
- 从
/sys/fs/cgroup/memory/docker/<container-id>/memory.stat
可以看到docker容器实际的内存使用情况(很有用!!) - 如有必要,可以使用
sudo sh -c "echo 1 > /proc/sys/vm/drop_caches"
释放cache内存
相关文章:

docker容器中的内存占用高的问题分析
文章目录 问题描述原因分析分析1分析2验证猜想 结论和经验 问题描述 运维新增对某服务的监控后发现:内存不断上涨的现象。进一步确认,是因为有多个导出日志操作导致的内存上涨问题。 进一步的测试得出的结果是:容器刚启动是占用内存约为50M…...

纯血鸿蒙NEXT常用的几个官方网站
一、官方文档 https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/Readme-CN.md刚入门查看最多的就是UI开发模块,首先要熟悉组件使用 二、官方API参考 https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/development-i…...

A股上市公司企业创新能力、质量、效率-原始数据+dofile+结果(2006-2023年)
上市公司的创新能力体现在其不断研发新技术、新产品和服务的能力上,这是企业保持竞争优势的关键;质量则是指公司所提供的产品或服务达到高标准的程度,高质量是赢得客户信任和市场份额的基础;效率则涵盖了生产运营中的资源利用程度…...

Selenium:开源自动化测试框架的Java实战解析
背景 在软件开发领域,随着Web应用程序的日益复杂和快速迭代的需求,传统的手动测试方法已经无法满足高效、全面的测试需求。自动化测试作为一种高效、稳定的测试手段,逐渐成为软件开发流程中不可或缺的一环。Selenium,作为一款开源…...

搜索功能技术方案
1. 背景与需求分析 门户平台需要实现对服务信息的高效查询,包括通过关键字搜索服务以及基于地理位置进行服务搜索。面对未来可能的数据增长和性能需求,选择使用 Elasticsearch 来替代 MySQL 的全文检索功能。这一选择的背景与需求可以总结为以下几点&am…...

硬件体系架构的学习
硬件体系架构的学习 RISC全称Reduced Instruction Set Compute,精简指令集计算机; CISC全称Complex Instruction Set Computers,复杂指令集计算机。 SOC片上系统概念 System on Chip,简称Soc,也即片上系统。从狭义…...

【与C++的邂逅】--- C++的IO流
Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: 与C的邂逅 本篇博客我们来了解C中io流的相关知识。 🏠 C语言输入输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 sc…...

【C++ Primer Plus习题】16.8
大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream> #include <set> #includ…...

基于stm32的四旋翼无人机控制系统设计系统设计与实现
文章目录 前言资料获取设计介绍功能介绍设计程序 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业…...

【原理图PCB专题】案例:原理图设计检查为什么要检查全局网络?
本案例发生在新人的PCB设计文件中,当然就算硬件老人们,其实只要不注意也很容易出现这种全局网络乱用的问题。 如下所示是给新人的接口参考图纸,要求使用嘉立创绘制16个相同的接口做一个工装板。同时还要增加单片机实现切换控制功能。可以看到座子的24个管脚中使用到了3.3V、…...

Java 之 IO流
一、IO流概述 在计算机编程中,IO流(Input/Output Stream)是处理设备间数据传输的关键技术。简单来说,IO流就是以流的方式进行输入输出,数据被当作无结构的字节序或字符序列来处理。在Java等编程语言中,IO流…...

计算机毕业设计 健身房管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...

uniapp uview扩展u-picker支持日历期间 年期间 月期间 时分期间组件
uniapp uview扩展u-picker支持日历期间 年期间 月期间 时分期间组件 日历期间、年期间、月期间及时分期间组件在不同的应用场景中发挥着重要的作用。这些组件通常用于表单、应用程序或网站中,以方便用户输入和选择特定的日期和时间范围。以下是这些组件的主要作用&a…...

GAMES101(10~11节,几何)
Geometry implicit隐式几何表示: 函数f(x,y,z): 根据函数fn描述几何,遍历所有空间内 的点,如果带入xyz到函数f(x,y,z)结果0那就绘制这个点 如果xyz求值结果>0表示在几何外,0在表面,<0在几何内 构造几何csg(…...

家电制造的隐形守护者:矫平机确保材料完美无瑕
在家电制造业中,产品的美观和耐用性是消费者选择的关键因素。然而,在生产过程中,材料的翘曲问题往往成为影响产品质量的隐形杀手。幸运的是,矫平机的出现,为家电制造商提供了一个有效的解决方案,确保每一件…...

软件设计师考纲及笔记
1. 计算机系统知识(分值占比:10%,重要程度:★★★★☆) 1.1 计算机系统基础 计算机组成: 中央处理器(CPU):计算机的核心部件,执行指令并处理数据。内存&…...

基于SpringCloud的微服务框架
1. 服务架构演变 1.1 单体架构 开发部署方便,维护扩展难。 1.2 垂直分割 将应用拆分成多个垂直部分,每一部分负责一组相关功能。 1.3 SOA(Service-Oriented Architecture) 面向服务的架构,引入了服务的概念。通过…...

C++速通LeetCode简单第19题-只出现一次的数字
方法一:暴力求解,排序后两个两个比较,两者不同时前者为答案: class Solution { public:int singleNumber(vector<int>& nums) {if(nums.size() 1) return nums[0];list<int> l;int ans 0;for(int i 0;i< n…...

AutoSar AP中Proxy Class中Methods描述的总结
☞ 返回总目录 5.3.6 Methods(方法) Proxy Class 与方法包装类 代理类与方法成员:对于远程服务的每种方法,Proxy Class 包含特定于该方法的包装类成员。例如示例中有 Calibrate、Adjust 和 LogCurrentState 三种方法对应的成员。…...

如何在本地计算机中打开远程服务器的Jupyter notebook
1. 在你的本地计算机上打开终端。 2. 使用SSH命令创建一个隧道: ssh -L 8888:localhost:8888 your_usernameyour_server_ip 这里,your_username 是你的服务器用户名,your_server_ip 是你的服务器IP地址。 其中,-L 8888:localhos…...

实习项目|苍穹外卖|day11
Apache ECharts 前端技术。 营业额统计 还是比较简单的。 用户统计 订单统计 以上所有需求。难点在于对时间类的处理: // 接收格式 GetMapping("/turnoverStatistics")ApiOperation("营业额统计")public Result<TurnoverReportVO>…...

easy_cloudantivirus
0x00前言 必须安装在virtualbox 攻击机:kali 靶机 easy_cloudantivirus 链接: https://www.vulnhub.com/entry/boredhackerblog-cloud-av,453/ 0x01信息搜集 经过测试发现靶场IP为192.168.56.106 进一部对IP搜集信息 发现8080端口youhttp服务。…...

python中Web API 框架
Python 中有几个非常流行的 Web API 框架,它们让你可以轻松地构建和部署高效的 Web API。下面我将为你介绍几个最受欢迎的 Python Web API 框架,及其使用方法和特点。 1. FastAPI FastAPI 是一个现代、快速(非常高性能)的 Web 框…...

Linux(6)--CentOS目录
文章目录 1. 根目录2. cd目录切换命令3. CentOS目录介绍4. pwd命令介绍5. ls命令介绍5.1 ls5.2 ls -a5.3 ls -l 1. 根目录 Windows电脑的根目录是计算机(我的电脑),然后C盘、D盘。 Linux系统的根目录是/,我们可以使用cd /进入根目录,然后使…...

标准C++(二)
一、名字空间 什么是名字空间 在C语言中定义的全局变量、函数、结构、联合、枚举、枚举值、宏都在全局作用域下,所以当项目比较庞大时,非常容易造成命名冲突(以模块名作前缀、后缀),所以C中选择把全局作用域进行拆分…...

硬件工程师笔试面试——保险丝
目录 10、保险丝 10.1 基础 保险丝原理图 保险丝实物图 10.1.1 概念 10.1.2 保险丝的工作原理 10.1.3 保险丝的主要类型 10.1.4 保险丝的选择和使用注意事项 10.2 相关问题 10.2.1 保险丝的额定电流和额定电压是如何确定的? 10.2.2 保险丝的熔断速度对电路保护有何…...

本地安装Ollama+WebUI
本地安装OllamaWebUI B站教程地址:https://www.bilibili.com/video/BV1Kz421h7Jk/?spm_id_from333.337.search-card.all.click&vd_source42b07826977d09765ec11b9fa06715e5 一、下载Ollama https://ollama.com/download 支持mac、linux、windows 选择在ubu…...

请求响应-05.请求-日期参数JSON参数
一.日期参数 当浏览器发起的请求参数类型是日期参数时,我们通常使用LocalDateTime对象来接收,前面使用DateTimeFormat注解来完成日期的格式转换(日期时间格式有多种,需要哪种就设置为哪种:如yyyy-MM-dd HH:mm:ss&…...

CSS学习路线
CSS学习路线大全及面试常见题目可以归纳为以下几个部分: CSS学习路线大全 CSS基础 引入CSS的方式:外部样式表、内部样式表、内联样式。CSS选择器:包括ID选择器、类选择器、标签选择器、后代选择器、子选择器、相邻兄弟选择器、兄弟选择器、…...

Linux memcg lru lock提升锁性能
目录 内核关于per memcg lru lock的重要提交: 计算虚拟地址转换基本机制 问题背景 swap换入流程 时奎亮的per memcg lru lock分享视频 内核关于per memcg lru lock的重要提交: f9b1038ebccad354256cf84749cbc321b5347497 6168d0da2b479ce25a4647d…...