k8s 容器 java 应用内存限制不生效

一   k8s java 应用内存限制不生效

回顾:Linux杂谈之java命令

namespace负责资源隔离  cgroups负责资源限制    容器JVM最佳实践

Metaspace 是 '非 Heap 内存' 管理空间,那么 Heap 就是'操作'空间

JVM内存模型简介

隔离: 两个进程完全'隔离'感知: 使用 docker 的时候会感觉'每个容器启动'的应用之间'互不'干扰从'文件系统、网络、CPU、内存'这些都能完全'隔离'开来,就像两个运行在'不同的服务器中'的应用补充: 容器在'宿主机'表现为一个'进程'++++++++++  "分割线"  ++++++++++限制: CPU、内存、磁盘、带宽等推荐 JVM 的配置'约等于'容器限制的 '70%~80%'补充: hpa 设置'不合理' 导致 '频繁重启'

①  问题引入

思考: 如果在'java容器'中 未设置JVM相关参数、或设置不合理导致'不生效'现象: java 应用 limit是8G,- Xms是6G,但是实际检'监测'到服务跑了7g,但是应用'没有被OOM'补充: 金融容器,执行 'free -m' 看到的内存使用状况和'宿主机'中的保持一致云原生时代: JVM '内存机制' 和 Kubernetes '内存管理''观测'方式: docker stats 和 kubectl top pods -n 观察 '内存'使用docker stats --no-stream --format \"table{{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}\t{{.BlockIO}}\t{{.PIDs}}"

②   jdk版本与jvm参数

-XX:MaxRAMPercentage, -XX:MinRAMPercentage    -Xmx, -Xms

java容器 不同jdk版本验证

细节: jdk '1.8191+ '设置 'Percentage'值时候'不能'为整数,jdk1.10+之后可以'为整数'1、在191版本'后',-XX:{Min|Max}RAMFraction 被'弃用'2、引入了-XX:MaxRAMPercentage,其值介于0.0到100.0之间,默认值为'25.0'

 

JVM UserContainerSupport    推荐JVM参数设置

-XX:+UseContainerSupport 允许 JVM 从'主机'读取 cgroup 限制例如: 可用的 CPU 和 RAM,并进行相应的配置效果: 这样当容器超过'内存限制'时,会抛出'OOM异常',而'不是'杀死容器

选用jdk版本: jdk 8u191+,推荐'1.8.0_202'核心JVM参数: -XX:UseContainerSupport  -XX:MaxRAMPercentage=75.0补充: jdk8u191+ 为 '适配 docker容器' 新增上面'几个'参数 

-Xmx 不受jdk版本限制

-XX:MetaspaceSize 解读

GC JVM参数解读

③  Java启动一些默认行为

'默认'情况下,JVM '自动'分配的 heap 大小取决于'机器'配置比如: 我们到一台 '32G' 内存服务器java -XX:+PrintFlagsFinal -version | grep -Ei "maxheapsize|maxram"

 

-Xms: 初始'heap'堆内存,会会立刻'被占用',默认为物理内存的 '1/64'-Xmx: 最大堆内存,或者说'Heap'堆内存的'上限',默认为物理内存的 '1/4'一个容器内存分配: 'Heap' + '非Heap [MetaSpace]等' + '容器中其它内存'细节: 需要在最大'堆空间'、'非堆内存'使用量和 'pod 限制'之间取得平衡补充: 'ES' 要求 -Xms和-Xmn保持'一致'++++++++++++++  "分割线"  ++++++++++++++1、MaxMetaspaceSize的默认值是'无限制',推荐设置'256M'2、但可以通过'-XX:MetaspaceSize'和'-XX:MaxMetaspaceSize'来设置初始和最大值
​
++++++++++++++  "分割线"  ++++++++++++++-XX:InitialRAMPercentage=75.0 -XX:MaxRAMPercentage=75.0 \-XX:MinRAMPercentage=75.0 -XX:+PrintGCDetails -XX:+PrintGCDateStamps \-XX:+PrintTenuringDistribution -XX:+PrintHeapAtGC -XX:+PrintReferenceGC \-XX:+PrintGCApplicationStoppedTime -Xloggc:gc-%t.log \-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=15 -XX:GCLogFileSize=50M2C4G --> 配置指定 75% ,相当于设置了 -Xms3g -Xms3g

④  通过LimitRange 做ns内的资源限制

k8s 容器 java的资源限制

将所由的options都放到 -jar 面前才能生效

spring boot 配置环境变量不生效

了解'业务代码' + '线上运维环境' --> '最佳定位'  --> '运维开发'-XX:UseContainerSupport -XX:MaxRAMPercentage=75.0 -XX:MinRAMPercentage=75.0 -Xms -Xmn ++++++++++++ '查看容器对应的宿主机PID' ++++++++++++docker top container_id docker inspect -f '{{.State.Pid}}'  container_id  

 k8s网络之(一)如何调试容器网络nsenter 原创

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

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

相关文章

VM虚拟机忘记密码,ISO镜像修改

VM虚拟机忘记密码,ISO镜像修改 制作镜像: 镜像已制作,可在文末链接自行获取从镜像启动系统 1)添加IOS镜像文件: 2)开机进去固件: 进入后选择对应的驱动器启动 3. 修改密码 点击修改密码软件&a…

iframe 页面中获取父级页面的 localStorage 或者 sessionStorage数据

问题 在开发的过程中遇到需要在 iframe 页面中获取父级页面系统所存储的本地数据的需求。由于浏览器的安全策略,是不允许 iframe 页面直接获取系统的存储数据的,那么要如何解决呢? 解决方法 对于该问题,我们可以通过 window.po…

【极数系列】Flink环境搭建(02)

【极数系列】Flink环境搭建(02) 引言 1.linux 直接在linux上使用jdk11flink1.18.0版本部署 2.docker 使用容器部署比较方便,一键启动停止,方便参数调整 3.windows 搭建Flink 1.18.0版本需要使用Cygwin或wsl工具模拟unix环境…

每日一题——LeetCode1309.解码字母到整数映射

方法一 个人方法&#xff1a; 由题意可得&#xff1a; 1、1-26对应a-z&#xff0c;只不过从10开始&#xff0c;后面要加#才能表示字母 2、10# - 26# 都是三位数&#xff0c;开头<2&#xff0c;结尾都为# 3、某个数后面两位如果不为#那么该数为1-9对应a-i&#xff0c;如果…

SQL 注入漏洞原理以及修复方法

漏洞名称 &#xff1a;SQL注入 、SQL盲注 漏洞描述&#xff1a;所谓SQL注入&#xff0c;就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串&#xff0c;最终达到欺骗服务器执行恶意的SQL命令。具体来说&#xff0c;它是利用现有应用程序&#xff0c;将&…

华为设备配置简单流分类

实验需求&#xff1a;10.1.1.0/24网段的PC访问PC3&#xff0c;流量进入AR1时&#xff0c;DSCP字段优先级为0&#xff0c;在AR1进行配置&#xff0c;将10.1.1.0/24网段流量的优先级映射为内部优先级46。 实验步骤&#xff1a; 步骤1&#xff1a;配置IP地址 [AR1]interface g0/…

Pygame之纯Python实现你好2024效果

Pygame之纯Python实现你好2024效果 前言&#xff1a; 对于某些指JavaScript与前端实现为Python实现你好2024效果的营销号实在看不下去了。无底线营销&#xff0c;还要私信拿源码&#xff0c;hhh 于是就有了以下代码&#xff1a; 运行前安装pygame pip install pygame运行效果…

k8s-基础知识(Service,NodePort,CusterIP,NameSpace,资源限制)

Node Node 是 Pod 真正运行的主机&#xff0c;可以是物理机&#xff0c;也可以是虚拟机。 Annotations 原文链接 Annotations 是 key/value 形式附加于对象的注解。不同于 Labels 用于标志和选择对象&#xff0c;Annotations 则是用来记录一些附加信息&#xff0c;用来辅助应…

Linux mesg命令教程:如何控制终端的消息接收(附案例详解和注意事项)

Linux mesg命令介绍 mesg是一个用户用来控制其他用户是否可以向其关联到标准错误输出的终端设备写入访问权的实用程序。如果允许写入访问&#xff0c;那么像talk(1)和write(1)这样的程序可能会在终端上显示消息。在优先考虑各种安全风险的用户日益增多的情况下&#xff0c;正确…

HTML 入门手册(一)

目录 HTML介绍 1-基础语法 单标签 双标签 整体结构 2-标题和水平线 标题 水平线 3-段落和换行 段落 换行 4-列表 无序列表 有序列表 嵌套列表 5-div和span div span 6-格式化标签 粗体 斜体 下划线中划线 上标和下标 7-超链接(a标签) 链接到URL 链接…

openharmony应用开发HDC 常用命令

HDC 常用命令 1.查看hdc版本&#xff1a; hdc --version 2.查看设备sn号&#xff1a; hdc list targets 3.进入shell: hdc shell 4.重启设备 hdc shell reboot 5.设置RK开发板根目录的读写权限 hdc shell mount -o rw,remount / # 此命令用于解决推包时提示只读路径&…

GitHub无法完成推送 的设置选项

GitHub无法完成推送 的设置选项 系统设置 VS中控制台设置【指令】 控制台调出方法 以下为VS控制台指令 git config --global --unset http.proxy git config --global --unset https.proxygit config --global http.proxy 127.0.0.1:7890 git config --global https.proxy …

如何在Nginx中配置防盗链?

如何在Nginx中配置防盗链? 防盗链是一种保护网站资源不被非法下载的技术。在Web服务器中&#xff0c;我们可以使用Shell脚本来实现防盗链的配置。本文将介绍如何在Linux系统中的Nginx Web服务器中使用Shell脚本实现防盗链。 一、什么是防盗链&#xff1f; 防盗链是一种防止…

网站安全每日话题——网页内容被篡改怎么办

大家好&#xff0c;今天我们要聊一个网站安全的话题——网页内容被篡改。这可不是小事&#xff0c;可能会给我们的网站和用户带来很大的危害。咱们一起来看看吧&#xff01; 网页内容被篡改的危害 信任丧失 用户信任是网站成功的基石。一旦网页内容被篡改&#xff0c;用户可…

docker - compose 部署 Tomcat

目录 下面用 docker-compose 方法部署 Tomcat 1、准备工作 2、部署容器 启动容器 查看新启动的容器 3、总结 下面用 docker-compose 方法部署 Tomcat 1、准备工作 先在主机创建工作文件夹&#xff0c;为了放置 Tomcat 的配置文件等。创建文件夹的方法&#xff0c;自己搞…

【从浅到深的算法技巧】链表 补

3.8 队列的实现 基于链表数据结构实现Queue API也很简单&#xff0c;如下面算法所述。它将队列表示为一条从最早插入的元索到最近插入的元素的链表&#xff0c;实例变量first指向队列的开头&#xff0c;实例变量last指向队列的结尾。这样&#xff0c;要将一个元素 入列( enqueu…

React类组件中super()和super(props)有什么区别?

React中super&#xff08;&#xff09;和super&#xff08;props&#xff09;有什么区别&#xff1f; 回答思路&#xff1a;说说ES6类的继承-->说说类组件的继承-->总结区别ES6类的继承类组件的继承总结区别 回答思路&#xff1a;说说ES6类的继承–>说说类组件的继承–…

【操作系统】实验三 编译 Linux 内核

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的很重要&…

基于springboot+vue的在线商城系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

git的使用(idea中)

文章目录 Git分布式版本控制工具1、目标2、概述2.1、开发中的实际场景2.2、版本控制器的方式2.3、SVM2.4、Git2.5、Git工作流程 3、Git安装与常用命令3.1、Git环境配置3.1.1 下载与安装3.1.2基本配置3.1.3为常用指令配置别名(可选)3.1.4解决GitBash乱码问题 3.2、获取本地仓库3…