Docker查看应用的实际内存

前言

我们把应用部署到Docker里面之后,有什么办法查看这个应用占用了多少内存呢?

docker本身提供了一个命令让我们可以直接看到当前时间所有容易占用的情况。

docker stats --no-stream

从上面来看,这几个应用用的内存加起来已经是将近12G了。

但是,这个时候看到机器使用的内存还不到2G。

第一反应就是,docker 这个统计太离谱,太坑人了。

查了一番资料过后,其实是计算的问题,也不能说那个是错的。

注:这里的 docker 版本是 Docker version 20.10.2, build 2291f61

一般来说应用对内存的占用,这个指标其实是十分重要的,不然内存泄漏都难以发现。

如果我们想要看到应用比较真实的内存要怎么做呢?

处理方案

其实可以分成两个步骤

  1. 找到应用的真实进程Id(宿主机里面的)

  2. 从宿主机的 /proc/pid/status 去看 VmRSS 的值

找 Pid

docker inspect 命令可以看到当前容器的一些信息,里面也包含了我们要找的这个 Pid。

docker inspect -f '{{.State.Pid}}' 容器ID

这个时候就找到了对应的Pid了。

ps 看了一下这个Pid确实是应用的。

这个时候第一步就完成了。

查 VmRSS

有了 Pid 之后,要查内存就比较容易了。

直接 cat /proc/pid/status 就能看到了。

虽说这样能找到某个应用具体的内存,但是每次都这样去操作一遍也是挺麻烦的。

而且这样操作一次只能查一个应用,想看多个应用还要分多次。

既然有了上面的步骤,那么我们就可以把这个整理成一个脚本,每次执行一下这个脚本就可以了。

# 找出所有运行的容器
idNames=`docker ps --format "{{.ID}}|{{.Names}},"`# 按,号分隔
OLD_IFS="$IFS"
IFS=","
arr=($idNames)
IFS="$OLD_IFS"# 输出 Title
printf "%-15s %-30s %-15s\n" Id Name Mem# 遍历所有容器
for item in ${arr[@]}
do# 容器ID和容器名字 按 | 分隔OLD_IFS="$IFS"IFS="|"array=($item)IFS="$OLD_IFS"# 当前容器的Pidpid=`docker inspect -f '{{.State.Pid}}' ${array[0]}`# 当前容器的内存mem=$(cat /proc/$pid/status|grep -e VmRSS| awk '{print $2}')# 输出结果printf "%-15s %-30s %-15s\n" ${array[0]} ${array[1]} $[$mem / 1024]M
done 
执行上面的脚本后,就可以看到当前正在运行的容器的内存占用情况了。

现在看上去,占用大概是1G多,加上其他的内存占用,这个值看上去就和 free 看到的不到2G的使用内存比较接近了。

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

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

相关文章

如何动态的生成某种类型的集合呢_知乎画报」的移动端动态化工程实践

本文基于移动端动态化方案在知乎原生推广落地页「知乎画报」上的实践经验,对该方案技术升级过程中的思考以及技术关键细节做了详尽的解读。商业化是互联网公司发展的重要阶段,App 端的商业广告业务对移动端动态化能力的需求很强烈,一方面需要…

任正非致歉华为前程序员:回来吧,公司错了

近几日,因着任正非连续签发邮件,无处不在热议华为,其中与所有的技术人可谓密切相关。除了一员工因说真话,被晋升两级,根据其自愿选择工作岗位及地点,并由无线网络产品线总裁邓泰华保护其不受打击报复之外&a…

Asp.Net Core之Identity应用(下篇)

一、前言在上篇中简单介绍了 Asp.Net Core 自带的 Identity,一个负责对用户的身份进行认证的框架,当我们按需选择这个框架作为管理和存储我们应用中的用户账号数据的时候,就会添加到自己的项目当中去。这个时候,默认情况我们会使用自带的数据…

如果每一种语言都对应一种女生,你会喜欢哪一个?

这几天调试都很顺利,今天很意外的不要加班,哥几个看着窗外还是白天,还有点不适应。没想到哥几个突然开始YY:如果每种语言都对应一种女生,你会喜欢哪一个?程序猿寂寞起来,我自己都害怕。碍于人数…

asp.net core安全事项(下)

越权越权是非常严重的安全漏洞,通常状态是开发人员对请求的限制逻辑不严格导致的。如果系统中有角色的概念,越权可能出现不同角色间的越权和同角色间的越权。相同角色:A用户,B用户是相同的角色。A用户和B用户都可以调用 /photo/{i…

[导入]php 安全基础 第八章 共享主机 文件系统浏览

8.4. 文件系统浏览 除了能在共享服务器上读取任意文件之外&#xff0c;攻击者还能建立一个可以浏览文件系统的脚本。由于你的大多数敏感文件不会保存在网站主目录下&#xff0c;此类脚本一般用于找到你的源文件的所在位置。请看下例&#xff1a; <pre> <?php if (iss…

程序员的项目周期(表情包版)

0. 需求审评会议进行中1. 开发阶段进行中….2. 代码复查阶段3. 测试阶段….4. 需求突然要改….5. 项目上线

[导入]php 安全基础 附录B. 函数

附录B. 函数 在我写作本书的时候&#xff0c;http://php.net/quickref.php列出了共3917个函数&#xff0c;其中包括一些类似函数的语法结构&#xff0c;在此我不准备把它们从函数中区分开来&#xff0c;而是把它作为函数看待。 由于函数数量很大&#xff0c;一一说明它们的正确…

6段Python代码刻画深度学习历史:从最小二乘法到深度神经网络

最小二乘法深度学习的一切都起源于这个数学片段&#xff08;我把它用Python 写了出来&#xff09;&#xff1a;这一方法是 1805 年巴黎数学家阿德利昂玛利埃勒让德首次提出的&#xff08;1805&#xff0c;Legendre&#xff09;&#xff0c;勒让德建立了许多重要的定理&#xff…

win7美化_Potplayer64位美化版,无棒子的tv推送

potplayer 64位是一款视频播放器&#xff0c;potplayer 64位目前正在新功能全力开发中&#xff0c;由于采用delphi编译程序kmplayer的一些弊端&#xff0c;姜龙喜先生为改进播放器本身的一些性能而重新用vc进行构架&#xff0c;有需要的伙伴们可以移步简易下载站获取&#xff0…

如何在 C# 8 中使用 Channels

在面对 生产者-消费者 的场景下&#xff0c; netcore 提供了一个新的命名空间 System.Threading.Channels 来帮助我们更高效的处理此类问题&#xff0c;有了这个 Channels 存在, 生产者 和 消费者 可以各自处理自己的任务而不相互干扰&#xff0c;有利于两方的并发处理&#x…

mockito mock void方法_使用 Junit + Mockito 实践单元测试!

一、前言相信做过开发的同学&#xff0c;都多多少少写过下面的代码&#xff0c;很长一段时间我一直以为这就是单元测试...SpringBootTestRunWith(SpringRunner.class)public class UnitTest1 {Autowiredprivate UnitService unitService;Testpublic void test() {System.out.pr…

人为什么会出轨?麻省理工学院告诉你:男女配对的真相

该实验出自麻省理工学院著名经济学家Dan Ariely的《The Upside of Irrationality》。结果很有趣&#xff0c;在我们的生活中也尤为常见。实验人员找来100位正值青春年华的大学生&#xff0c;男女各半。然后制作了100张卡片&#xff0c;卡片上写了从1到100总共一百个数字。单数的…

当 .NET 5 遇上OpenTelemetry,会碰撞出怎样的火花?

OpenTelemetry 介绍我在之前的几篇文章都介绍了 OpenTelemetry, 你可以在这里找到OpenTelemetry - 云原生下可观测性的新标准深入研究.NET 5的开放式遥测OpenTelemetry是谷歌和微软共同推进的云原生监控的新规范&#xff0c; 兼容OpenTracing和OpenCensusOpenTelemetry的终极目…

kotlin中mainactivity无法直接调用xml中的控件_使用52North 客户端接口调用OGC WPS服务...

52North是一个来自研究机构、工业界和公共行政管理界的研究者组成的开放国际合作组织&#xff0c;他们通过协作研发流程促进地理信息学创新。具体来说他们开发新的地理信息概念和技术&#xff0c;例如用于管理时空测量数据&#xff0c;以及通过网络共享地理处理技术。他们评估新…

明天放假,我放价!一个国庆假期教你学会数学建模

原价298元&#xff0c;国庆放价&#xff01;248元即可报名学习&#xff01;数学建模涉及的内容比较广泛&#xff0c;比如碎纸片问题中所涉及的图像识别及神经网络、小区开放问题中所涉及的车流模拟仿真、还有“互联网”时代的出租车资源配置中所涉及的运筹调度。或许数学建模的…

微软开源可扩展存储引擎Extensible Storage Engine

喜欢就关注我们吧&#xff01;昨日&#xff0c;微软副总裁 Scott Van Vliet 在推特上表示&#xff0c;可扩展存储引擎 Extensible Storage Engine&#xff08;ESE&#xff09;现已开源。可扩展存储引擎 Extensible Storage Engine&#xff08;ESE&#xff0c;也称 JET Blue&…

.NET应用程序中异步调用Web Service的几种方法 come from: veryhappy(wx.net)

测试程序界面 图一&#xff0c;调用前界面 图二&#xff0c;调用后界面 详细代码实现 闲言少叙&#xff0c;直接进入主题吧。首先一个声明一个类&#xff08;将来在客户端与服务器间传递&#xff09;&#xff1a; public classClass1 { private int _ID; priv…

完美国际真数苹果_如果给你推荐一款很贵,但好用的苹果手机壳,你会买吗?...

【引言】说到全球最热门的手机&#xff0c;大家都知道一定是iPhone啦&#xff0c;作为系统和功能整合得最优秀的手机&#xff0c;不足的地方也非常明显&#xff0c;比如外壳不耐剐蹭&#xff0c;维修成本很高......&#xff0c;所以大多数果粉都会选择保护壳或者贴膜来保护自己…