当前位置: 首页 > news >正文

Kubernates容器化JVM调优笔记(内存篇)

Kubernates容器化JVM调优笔记(内存篇)

  • 先说结论
  • 背景
  • 思路
  • 方案

先说结论

1、首先如果是JDK8,需要使用JDK8_191版本以上,才支持容器化环境和以下参数,否则就更新到JDK10以上,选择对应的镜像构建就行了
2、在容器的JAVA程序启动时JVM参数增加-XX:MaxRAMPercentage=90.0 -XX:MinRAMPercentage=60.0配置内存参数,该参数可以识别容器环境,基于容器的资源调整JVM,参数的值就是占用容器总内存的比例(百分比)
3、Kubernates配置容器资源限制,控制容器的内存资源请添加图片描述

背景

Kubernates宿主机集群资源不足,如果不限制集群容器资源,服务器资源占满,会导致服务器崩溃,或容器错误重启,或者集群服务无响应,反正就是用不了了,因为长时间运行服务内存都会上涨,对于配置低的服务器就不行了

思路

一开始想着调整jvm的Xmx、Xms控制JVM的内存,但是发现不起作用,运行久了依然会超出设置的值。

然后就想着把容器的资源限制住,让容器的内存降低,相当于低配服务器运行服务,结果调整了容器资源限制,会频繁导致服务重启。

查询资料发现,Xmx、Xms在容器中不会根据容器的资源调整,依然根据宿主机的内存资源动态调整,所以识别宿主机的内存有很大,所以在需要的时候就会请求更多的内存,但是由于Kubernates对容器限制了,所以请求不到更多资源,就会导致内存溢出,错误之后容器就会被Kubernates重新调度,重启,更影响服务的使用了。

所以应该让jvm识别到容器的实际大小

方案

查询JAVA手册,在JDK8_191版本以上,才支持容器化环境参数
-XX:MaxRAMPercentage=90.0 -XX:MinRAMPercentage=60.0配置内存参数
可以识别容器的资源,如果限制了容器的资源,就会根据容器的资源为基础,按比例分配,达到最大限制时进行内存回收,不会导致内存溢出。
具体的值还需要各位同学根据实际情况,观察服务后,最适当调整,第一次可以给个预估,然后多观察就好了

http://www.lryc.cn/news/382186.html

相关文章:

  • Elasticsearch Scroll 报错entity content is too long
  • Vue iview输入框change事件replace正则替换不生效问题的解决。
  • Prestashop跨境电商独立站,外贸B2C网站完整教程
  • 常用算法及参考算法 (1)累加 (2)累乘 (3)素数 (4)最大公约数 (5)最值问题 (6)迭代法
  • java简易计算器(多种方法)
  • spring的bean定义和扫描规则
  • 软件工程体系概念
  • 史上最全整合nacos单机模式整合哈哈哈哈哈
  • Python xml.dom.minidom 读取XML元素
  • 【Python/Pytorch 】-- K-means聚类算法
  • 【Eureka】介绍与基本使用
  • SpringBoot+Vue集成富文本编辑器
  • React@16.x(34)动画(中)
  • ONLYOFFICE 8.1:全面升级,PDF编辑与本地化加强版
  • C++ 入门
  • GPT-5发布倒计时:AI智能从高中生到博士生的跨越
  • Docker 拉取镜像失败处理 配置使用代理拉取
  • 视频汇聚安防综合管理系统EasyCVR平台GB28181设备注册未上线的原因排查与解决
  • 【性能优化】Android冷启动优化
  • Git拉完整代码缺少某个类
  • Windows资源管理器down了,怎么解
  • 锐捷统一上网行为管理与审计系统 static_convert.php 前台RCE漏洞复现
  • 在Linux/Ubuntu/Debian中使用SSH连接远程服务器VPS
  • 如何安全进行亚马逊、沃尔玛测评?
  • 自动化喷涂生产线控制方法概述
  • 【Linux】Centos升级到国产操作系统Openeuler
  • 【扫雷游戏】C语言详解
  • 自定义平台后台登录地址前缀的教程
  • kylin v10 离线安装chrome centos离线安装chrome linux离线安装谷歌浏览器
  • AI交互及爬虫【数据分析】