cgroup version jdk version k8s

news2025/1/10 23:16:42

bug info:

in centos, linux 3.10, cgroup:v1, service works well.

in ubuntu 22.04 LTS, linux 5, systemd:v2, service is always crash on boot, or running some minutes then killed by OOM.

deploy.yaml文件相关内容:

specify limits:memory 1000M in yaml, killed by OOM.

die into pod, use jmap -heap pid, the max heap size is more bigger than 2000M.

so, the memory limit does not in effect.

what is cgroup

cgroup is: control group(控制组),专为子系统分配资源(cpu, memory, disk, net...)

cgroups(7) - Linux manual page

cgroup v1/v2 - linux version

cgroups(7) - Linux manual page

cgroup v1 implementation was in linux 2.6.24.

cgroup v2 starting in linux 3.10 and official with linux 4.5

cgroup in docker

Runtime metrics | Docker Docs

cgroup in k8s

About cgroup v2 | Kubernetes

Configuring a cgroup driver | Kubernetes

Container Runtimes | Kubernetes

k8s - ??? - containerd

k8s - docker shim - docker - containerd

k8s - ctr/crictl containerd

【K8S】ctr和crictl的区别_u010157986的博客-CSDN博客

https://www.cnblogs.com/aozhejin/p/16193359.html

k8s都开始抛弃dockerd了,ctr需要搞起了_ctr pause_柳清风09的博客-CSDN博客

UseContainerSupport最小支持版本

当时只有cgroup:v1

最小支持版本, oraclejdk-8u191/openjdk-8u191

Java™ SE Development Kit 8, Update 191 Release Notes

Bug Database

验证方法:

https://medium.com/ci-cd-devops/effect-on-container-mem-usage-with-usecontainersupport-f0071a6a577e

docker run -m 1gb openjdk:8u131 java -XshowSettings:vm -version

docker run -m 1gb openjdk:8u191 java -XshowSettings:vm -version

cgroup:v2/systemd:v2

openjdk-8u372, (未发布),   hub.docker上最新是8u342

openjdk-11.0.16,(已发布),   hub.docker上最新是11.0.16

Bug Database

[JDK-8230305] Cgroups v2: Container awareness - Java Bug System

how max heap size calculate?

jmap -heap pid | grep heap #jdk11相关命令稍有不同

free -h

max heap size = available * 25%

+UseContainerSupport to the Rescue

how container know memory info of pod?

服务启动后,kubectl exec进入pod,下图2个位置文件和 xx.yaml文件里配置的limits:memory应该是一样的才对。

cgroup:v1,对应 /sys/fs/cgroup/memory/memory.limit_in_bytes

cgroup:v2,对应 /sys/fs/cgroup/memory.max

Support cgroups memory limit detection for cgroups V2 · Issue #6894 · dask/distributed · GitHub

other links:

+UseContainerSupport to the Rescue

https://medium.com/ci-cd-devops/effect-on-container-mem-usage-with-usecontainersupport-f0071a6a577e

运行Debian11的Linux服务器中 docker run -m 命令 不生效 不能能限制住内存使用 cgroups_memory cgroup out of memory-CSDN博客

https://hostadvice.com/how-to/how-to-limit-a-docker-containers-resources-on-ubuntu-18-04/

How to Limit Memory and CPU for Docker Containers - Serverlab

修改 docker cgroup 版本的方法 (changing cgroup version)_shida_csdn的博客-CSDN博客

Runtime metrics | Docker Docs

Docker: Placing limits on container memory using cgroups | Fabian Lee : Software Engineer

Support cgroups memory limit detection for cgroups V2 · Issue #6894 · dask/distributed · GitHub

/sys/fs/cgroup/memory/memory.limit_in_bytes is missing in the container in version > 4.2.0 · Issue #6118 · docker/for-mac · GitHub

[JDK-8230305] Cgroups v2: Container awareness - Java Bug System

https://medium.com/ci-cd-devops/effect-on-container-mem-usage-with-usecontainersupport-f0071a6a577e

jvm参数配置看这里(dockerfile方式和k8s的yaml方式):JVM参数

the command line:

kubectl edit 编辑yaml,设置limits:memory

kubectl exec 进入pod容器

top 查看内存

free -h 查看内存

top -Hp pid 查看cpu

jmap -heap pid 查看jvm 内存

jinfo -flags pid 查看java启动参数

jstat -gc pid 2000 查看gc状态

java -version 查看jdk版本

java -XshowSettings:vm -XX:+PrintFlagsFinal -version | grep -Ei "maxheapsize|maxram|UseContainerSupport" 查看内存和UseContainerSupport是否生效

conclusion:

方案1: 保持linux kernel使用cgroup:v2或systemd:v2:

linux 4.5+(含)

使用opendjk-8u372+(含), 未发布,当前8u342, 统计时间为2022-12-07。

使用openjdk-11.0.16+(含),已发布,当前11.0.16,统计时间为2022-12-07。

方案2: 修改linux kernel后,使用cgroup:v1:

linux 2.6.24(含)-4.5(不含)

使用openjdk-8u191(含)+,已发布,统计时间为2022-12-07。

方案3:或直接使用openjdk:11.0.16,兼容cgroup:v1和cgroup:v2

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

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

相关文章

区域气象-大气化学在线耦合模式(WRFChem)在大气环境领域实践技术应用

随着我国经济快速发展,我国面临着日益严重的大气污染问题。近年来,严重的大气污染问题已经明显影响国计民生,引起政府、学界和人们越来越多的关注。大气污染是工农业生产、生活、交通、城市化等方面人为活动的综合结果,同时气象因…

Redis缓存相关问题

目录 缓存穿透 缓存雪崩 缓存击穿 Redis集群方案 主从复制Replication 哨兵sentinel 高可用介绍 Redis sentinel介绍 Redis sentinel使用 配置sentinel 启动sentinel 测试sentinel Redis内置集群cluster Redis cluster介绍 哈希槽方式分配数据 Redis cluster的…

ubuntu18.04 编译edk2项目下的intel架构bios

看了国内的edk2编译文章. 大不部分都是编译 用于虚拟机(qemu)或者模拟器上运行的 很少有编译edk2项目 出 真机的 bios 希望本文章对你有帮助, 请注意 github,com因为被墙了. 所有需要用gitee代替 参考来源 https://gitee.com/binout/edk2-platforms/tree/master https:/…

PHP8的类与对象的基本操作之类常量-PHP8知识详解

php 8引入了一种新的特性,称为类常量(class Constants)。类常量是在类中定义的常量,类似于全局常量,但作用域仅限于定义它们的类。 在PHP 8中,类常量的作用域被限制在定义它们的类中。这意味着只有类的成员…

【配电变电站的最佳位置和容量】基于遗传算法的最优配电变电站放置(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

uploadifive上传工具php版使用

uploadifive自带的DEMO文件。 下载地址&#xff1a; http://www.uploadify.com/download/ <!DOCTYPE HTML> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"> <title>UploadiFive Test&…

C4BUILDER—用于构建C4模型图的Web项目

c4builder是什么&#xff1f; c4builder&#xff1a; 字面理解是产生C4架构图的构建器。 c4builder是一个轻量级的nodejscli工具&#xff0c;用于仅使用文本构建、维护和共享软件体系结构项目。 c4builder是一种架构设计工具&#xff0c;可以帮助开发人员和架构师描述和可视化…

结合购物车功能,了解RedisTemplate中的BoundHashOperations源码

&#x1f9d1;‍&#x1f4bb;作者名称&#xff1a;DaenCode &#x1f3a4;作者简介&#xff1a;CSDN实力新星&#xff0c;后端开发两年经验&#xff0c;曾担任甲方技术代表&#xff0c;业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开…

零代码编程:用ChatGPT批量删除文件名称中的部分内容

要批量删除文件名称中的某些特定字符&#xff0c;可以在ChatGPT中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;要完成一个文件重命名的任务。具体步骤如下&#xff1a; 本地电脑&#xff1a;E:\peppa4 文件夹下有很多mp4文件&#xff0c;比如Peppa Pig Season…

轮换对称性

二重积分 普通对称性–D关于 y x yx yx对称&#xff1a; ∬ D f ( x , y ) d σ { 2 ∬ D 1 f ( x , y ) d σ f ( x , y ) f ( y , x ) 0 f ( x , y ) − f ( y , x ) \iint_{D}f(x,y)d\sigma\begin{cases} 2\iint_{D_1}f(x,y)d\sigma\ \ \ \ \ \ f(x,y)f(y,x) \\ 0 \ \…

每天几道Java面试题:IO流(第五天)

目录 第五幕 、第一场&#xff09;街边 友情提醒 背面试题很枯燥&#xff0c;加入一些戏剧场景故事人物来加深记忆。PS:点击文章目录可直接跳转到文章指定位置。 第五幕 、 第一场&#xff09;街边 【衣衫褴褛老者&#xff0c;保洁阿姨&#xff0c;面试者老王】 衣衫褴褛老…

ATFX汇市:美联储宣布维持利率不变,鲍威尔继续发表鹰派言论

ATFX汇市&#xff1a;今日凌晨02:00&#xff0c;美联储公布9月利率决议结果&#xff0c;宣布维持5.25%5.5%的联邦基金利率区间不变。2:002:05&#xff0c;美元指数从最低104.75飙涨至最高105.21&#xff0c;对应EURUSD的汇率从最高1.0727下跌至最低1.0674&#xff0c;跌幅53基点…

如何将 Transformer 应用于时间序列模型

在机器学习的广阔前景中&#xff0c;transformers 就像建筑奇迹一样高高耸立&#xff0c;以其复杂的设计和捕获复杂关系的能力重塑了我们处理和理解大量数据的方式。 自 2017 年创建第一个 Transformer 以来&#xff0c;Transformer 类型呈爆炸式增长&#xff0c;其中包括 Chat…

VS|vs2017跨平台编译linuxC++ConsoleQtGUI

未完成 待更新 文章目录 首先安装vs时要勾选上使用C的Linux开发使用Vs2017创建跨平台C Console项目配置Vs的SSH连接 Debug >> Option >> Cross Plaform文件加入到Linux项目&#xff0c;使用Windows下的文件即可。将所有项目包含.CPP、.h文件包含进Linux项目设置项…

案例丨如何提升可视化分析能力?听听这两家企业怎么说

神策分析 2.5 版本正式发布经营分析能力以来&#xff0c;已有不少客户接入使用&#xff0c;并充分实现了可视化分析能力的提升。 本文将为大家分享两家客户的真实反馈&#xff0c;希望能够帮助您进一步了解神策经营分析的能力。 案例一&#xff1a;神策数据助力美篇打造公司级“…

Linux学习之gdb的使用

目录 1.Debug与Release模式 如何证明debug是可以被调试的&#xff1f; 2.Linux调试器-gdb使用 gdb调试的指令 指令一&#xff1a;list&#xff08;l&#xff09; 查看源代码 编辑 ​编辑 命令二&#xff1a;run&#xff08;r&#xff09;运行程序 命令三&#xff…

mall电商项目(学习记录1)

1.简介 mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。后台管理系统包含商品管理、订单管…

基于movie lens-100k数据集的协同过滤算法实现

基于movie lens-100k数据集的协同过滤算法实现 数据集处理 基于用户的协同过滤算法的实现 基于物品的协同过滤算法的实现 数据集处理 import pandas as pdu_data pd.read_csv(D:/PyCharmWorkSpace/ml-100k/ml-100k/u.data) u_genre pd.read_csv(D:/PyCharmWorkSpace/ml-10…

c: Sorting Algorithms

SortAlgorithm.h /*****************************************************************//*** \file SortAlgorithm.h* \brief 业务操作方法* VSCODE c11 https://github.com/hustcc/JS-Sorting-Algorithm/blob/master/2.selectionSort.md* https://www.programiz.com/d…

vscode软件安装包下载安装教程

目录 一、软件简介 二、软件下载 三、安装步骤 一、软件简介 VSCode&#xff08;全称&#xff1a;Visual Studio Code&#xff09;是一款由微软开发且跨平台的免费源代码编辑器。该软件支持语法高亮、代码自动补全&#xff08;又称 IntelliSense&#xff09;、代码重构、查…