Docker下的资源限制问题
Docker下的资源限制问题
问题背景
公司某产品出现了一个奇怪的OOM 错误提示.
问题现象是 前台产品 提示 OOM cannot create native thread
但是同时查看 机器的资源和容器cadviser的资源, 资源限制都很少.
内存远远没有到达瓶颈, 并且看gclog也没有看到很多 GC信息
所以怀疑是资源限制导致的.
但是具体哪种资源限制也比较难以确认. 我这边也没有一个比较好的思路.
只能自己做下测试与验证.
查看宿主机的限制和容器的限制
我拿一个单节点的K8S节点进行一下简单的验证:
宿主机的限制:
open files (-n) 65535
stack size (kbytes, -s) 8192
max user processes (-u) 125328
容器内的限制
open files (-n) 1048576
stack size (kbytes, -s) 8192
max user processes (-u) unlimited
发现容器内外的限制总量不一致.
然后计划基于此进行一下验证
进入容器内
使用如下命令创建无数进程
注意需要先试用如下命令进入容器
kubectl -exec -n namespace pod's_name bash
然后执行命令
for i in $(seq 1 100000);do sleep 1000 & done
注意这个命令非常耗费资源, 一定要慎用. 随着线程数量的越来越多. 机器创建的速度会越来越慢.
然后发现可以突破 65535的资源限制, 也就是如下:
在容器内部:
Tasks: 66302 total, 1 running, 66301 sleeping
说明跟宿主机的部分咸芝士没有关系的.
内存使用情况
Tasks: 66302 total, 1 running, 66301 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.0 us, 3.8 sy, 0.0 ni, 93.6 id, 0.0 wa, 0.1 hi, 0.4 si, 0.0 st
MiB Mem : 31368.9 total, 411.7 free, 29466.7 used, 1490.5 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 1359.5 avail Mem
kill 所有的sleep 进程之后:
Tasks: 164 total, 1 running, 3 sleeping, 0 stopped, 160 zombie
%Cpu(s): 1.0 us, 0.4 sy, 0.0 ni, 98.3 id, 0.0 wa, 0.1 hi, 0.1 si, 0.0 st
MiB Mem : 31368.9 total, 13212.6 free, 16554.4 used, 1601.9 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 14307.7 avail Mem
其他限制学习
未完待续
Docker下的资源限制问题的更多相关文章
- Docker管理控制相关资源
一台宿主机可以放多个容器,默认的情况下,Docker 没有对容器进行硬件资源的限制,当容器负载过高时会尽可能的占用宿主机资源,所以有时候我们需要对容器的资源使用设置一个上限,这里就需要管理 Docke ...
- Docker运行时资源限制
Docker 运行时资源限制Docker 基于 Linux 内核提供的 cgroups 功能,可以限制容器在运行时使用到的资源,比如内存.CPU.块 I/O.网络等. 内存限制概述Docker 提供的 ...
- 设想 Docker 下部署 KVM
设想 Docker 下部署 KVM 一.安装 $ yum -y install kvm # kvm base , must $ yum -y install libvirt -y # libvirtd ...
- maven 编译部署src/main/java下的资源文件
maven 编译部署src/main/java下的资源文件 maven默认会把src/main/resources下的所有配置文件以及src/main/java下的所有java文件打包或发布到targ ...
- android访问asset目录下的资源
android提供了AssetManager来访问asset目录下的资源, 在activity中通过getAssets()获取AssetManager 常用的api如下: 1.列举路径下的资源Stri ...
- 安卓获取Assets目录下的资源
获取Assets目录下的资源 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 ! ...
- 在Docker下部署Nginx
在Docker下部署Nginx 在Docker下部署Nginx,包括: 部署一个最简单的Nginx,可以通过80端口访问默认的网站 设置记录访问和错误日志的路径 设置静态网站的路径 通过proxy_p ...
- Android 如何引用com.android.internal.R目录下的资源
Android 如何引用com.android.internal.R目录下的资源 项目需求 有一个资源跟系统上的一个资源相同,想要引用它:frameworks/base/core/res/res/dr ...
- Docker下redis的主从、持久化配置
Docker下redis的主从.持久化配置 redis是k-v型nosql数据库,支持字符串(string).列表(list).集合(set).散列(hash).有序集合(zset:形如member: ...
- java中根据key获取resource下properties资源文件中对应的参数
properties资源文件是放在resource目录下的: 新建工具类: package com.demo.utils; import java.io.InputStream; import jav ...
随机推荐
- linux文件和文件夹的筛选、查找及用户和组管理命令
1.列出当前系统上所有已经登陆的用户的用户名, 注意:同一个用户登录多次,则只显示一次即可. 查看系统用户的命令为: (1)getent passwd 查看系统上的所有用户信息 (2)w 查看登录用户 ...
- 云小课|聊一聊DRS的数据过滤特性
[本期推荐专题]在DevOps市场中,华为云DevCloud拔得头筹,看它如何助力企业面对商业环境瞬息万变快速响应. [摘要] 目前,DRS已支持其他云.本地IDC.ECS自建MySQL.SQL Se ...
- 详解openGauss多线程架构启动过程
摘要:本文介绍openGauss数据库的启动过程,包括主线程,辅助线程及业务处理线程的启动过程. 本文分享自华为云社区<openGauss内核分析(一):openGauss 多线程架构启动过程详 ...
- 实践GoF的设计模式:工厂方法模式
摘要:工厂方法模式(Factory Method Pattern)将对象创建的逻辑封装起来,为使用者提供一个简单易用的对象创建接口,常用于不指定对象具体类型的情况下创建对象的场景. 本文分享自华为云社 ...
- 华山论“件”:Kafka、RabbitMQ、RocketMQ技能大比拼
摘要:主流的消息中间件包含Kafka.RabbitMQ和RocketMQ,本期云图说为您介绍它们之前的差异. 本文分享自华为云社区<第234期 华山论"件"-Kafka.Ra ...
- 一文讲述数仓组件SysCache
摘要:SysCache是ThreadLocal结构,每个线程都具有各自的SysCache,其中存储的缓存信息由执行的业务决定. 本文分享自华为云社区<GaussDB(DWS)CBB组件之SysC ...
- 代码混淆工具ipaguard:如何使用ipaguard保护和混淆iOS应用程序代码
转载:怎么保护苹果手机移动应用程序ios ipa文件中的代码? 目录 转载:怎么保护苹果手机移动应用程序ios ipa文件中的代码? 代码混淆步骤 1. 选择要混淆保护的ipa文件 2. 选择要混 ...
- PLS-00103: 出现符号 ")"在需要下列之一时
执行 Oracle 存储过程时,出现 "PLS-00103: 出现符号 ")"在需要下列之一时:", Cause: java.sql.SQLException: ...
- PPT 商务图表的应用和美化之道
PPT 商务图表的应用和美化之道 折线图 饼图 你认为的图表元素,可能是图表外的元素 https://www.bilibili.com/video/BV1ha411g7f5/?p=11
- Jenkins Pipeline 流水线 - 上传文件 Publish over SSH + Docker 编译 + 上传到阿里仓库
Jenkins Pipeline 流水线 Publish over SSH 将jar上传到远程 Docker 服务器.执行编译命令生成镜像.将镜像上传到阿里仓库 Publish over SSH Ja ...