首页 > 系统相关 >Docker基础——50台容器异常占用宿主机90%内存问题

Docker基础——50台容器异常占用宿主机90%内存问题

时间:2024-04-25 16:24:06浏览次数:21  
标签:容器 宿主机 vm hugepages 50 内存 90% nr docker

一、问题描述

一台裸金属服务存有50台业务容器,通过Docker进程起服务,由system-runtime守护容器的生命周期。

free -h查看裸金属服务器内存没有正常释放,cat /proc/meminfo查看内存分配无异常,怀疑裸金属服务器

的Java进程存在Glibc内存泄漏,或Docker容器没有正常关闭进程释放内存有关;

二、问题排查

1、关闭容器

# 批量关闭裸金属服务器上的所有容器
docker stop $(docker ps -a -q)
# 查看容器的进程是否完全释放
ps -ef | grep docker

2、查看裸金属服务器内存使用详情

# 在裸金属服务器查看内存详情
free -h

3、检查docker容器存放位置

# Docker安装目录参数"data-root"
cat /etc/docker/daemon.json
{
"insecure-registries":["0.0.0.0/0"],
"data-root":"/apps/data/docker"
}

4、检查内存与docker容器无关

# 检查使用内存
free -h
# 检查大页内存
grep -i huge /proc/meminfo

5、 检查内核相关配置/etc/sysctl.conf

# 调整参数为0,降低大页内存预分配,无需重启
cat /etc/sysctl.conf | grep vm.nr_hugepages

 

grep -i huge /proc/meminfo

# 发现内核配置vm.nr_hugepages = 162882
 162882*2M=318GB左右预大页分配
# 匹配free -h 中used中328G相吻合

6、测试vm.nr_hugepages = 0

# 查看vm.nr_hugepages配置,预分配162882个内存页,实际占用free中used部分内存;
cat /etc/sysctl.conf| grep vm.nr_hugepages
# 将内核参数vm.nr_hugepages设置为0,观察free中used部分的变化
sed -i 's/vm.nr_hugepages = 162882/vm.nr_hugepages = 0/g' /etc/sysctl.conf
# 启用/etc/sysctl.conf配置
sysctl -p
# 查看free
free -h
# 结果
预占内存已经正常释放;

 三、参考

# 参考
https://blog.csdn.net/qq_43971504/article/details/107026782
https://blog.csdn.net/lihui49/article/details/125654410
https://www.kernel.org/doc/html/latest/admin-guide/mm/transhuge.html
https://www.cnblogs.com/bandaoyu/p/16752320.html
# 关闭大页内存
https://www.cnblogs.com/ywcz060/p/5543228.html

 

标签:容器,宿主机,vm,hugepages,50,内存,90%,nr,docker
From: https://www.cnblogs.com/gkhost/p/18157942

相关文章

  • Netfilter漏洞提权利用(CVE-2023-35001)
    前言Netfilter是一个用于Linux操作系统的网络数据包过滤框架,它提供了一种灵活的方式来管理网络数据包的流动。Netfilter允许系统管理员和开发人员控制数据包在Linux内核中的处理方式,以实现网络安全、网络地址转换(NetworkAddressTranslation,NAT)、数据包过滤等功能。漏洞成因在......
  • ABC350 E - Toward 0 题解
    AtCoderBeginnerContest350E-Toward0原题地址题意给定四个数NAXY,你可以对N进行以下两种操作。花费X的代价将N变成\(\lfloor\cfrac{N}{A}\rfloor\)花费Y的代价掷一颗骰子,设掷出结果是i,将N变成\(\lfloor\cfrac{N}{i}\rfloor\)你需要执行若干次......
  • Codeforces Round 906 (Div. 2) E1
    时隔了不知道多久的补题。两个月吧,这是可是寒假的比赛。但是补题的时候还是遇到了很多问题。很重要的有一些地方能够简化,一些条件没有充分的利用上,导致了我很多地方考虑的太复杂。这些能够简化的地方全部利用上我觉得才算是写出来了这道题目,否则这题会复杂到我赛时写不完,而且特......
  • linux命令从log文件中找出404 或者500的所有报错信息?
     你可以使用grep命令结合正则表达式来找出包含"404"或"500"的所有报错信息,并显示这些行的内容。以下是示例命令:grep-E'404|500'/path/to/logfile.log这个命令会在指定的日志文件/path/to/logfile.log中查找包含"404"或"500"的所有行,并将这些行显示出来。g......
  • jmeter中平均响应时间中百分位90,95,99区别,应该关注哪个?
      在JMeter中,平均响应时间(AverageResponseTime)以及百分位数(Percentiles)是用来衡量性能的重要指标之一。在这些指标中,99th百分位、95th百分位和90th百分位通常被用来表示响应时间的分布情况。99th百分位(P99):表示在所有请求中,99%的请求的响应时间都小于或等于该......
  • P5900 无标号无根树计数 题解
    不懂为啥都要对原式神秘转化之后再牛顿迭代,直接对原式牛顿迭代即可!完全不用转化!设无标号有根树的组合类是\(\mathcalT\),则有\(\mathcalT=\mathcalZ\times\mathrm{MSET}(\mathcalT)\),即\(T(x)=x\exp\sum\limits_{j\ge1}\dfrac{T(x^j)}j\),设\(G(F(x))=F(x)-x\exp\sum\lim......
  • UVA1500 Alice and Bob
    Statement:link给\(n\)个数\(a_1,a_2...,a_n\)。先手\(\rmAlice\)和后手\(\rmBob\)有两个操作。\(del(i)\)令\(a_i=a_i-1\),必须满足\(a_i>0\)。\(merge(i,j)\),将\(i,j\)合并,必须满足\(a_i,a_j>0\)若一个人不能进行操作,则判他输。若两人都......
  • 9轴传感器MPU9250调试
    MPU9250实际上是mpu6500+ak8963的贴合芯片,内部的AK8963是负责三轴磁力传感器采样的芯片,它通过I2C总线与MPU6500连接在一起。ak8963的寄存器读取可以通过特定的i2c直通模式:驱动代码,也是用mpu6500和ak8963对应的驱动即可。gsensor、陀螺仪、地磁传感器对应驱动如下:drivers/inpu......
  • (图论分析,思维)ABC 350-D
    背景:我自己思考想出来的图论题,总归是有成就感的分析:求间接连接的点的对数,即一个连通块中枚举出两两连接的组合数,减去整个连通块中的边数,因为一条边必然直接连接了两个不同的点原理:并查集时间复杂度:o(n)代码如下:点击查看代码#include<bits/stdc++.h>usingnamesp......
  • AtCoder Beginner Contest 350 A - G 题解
    AtCoderBeginnerContest350A-PastABCsSolution把最后三个字符转成数字判断即可Code#include<bits/stdc++.h>usingnamespacestd;intmain(){strings;cin>>s;s=s.substr(3,3);intx=0;x=(s[0]-'0')*100+(s[1]-�......