1 原因分析

线上配置的重要配置参数为:

最大堆内存 最小堆内存 docker内存
2G 2G 2G

可以看到堆内存和docker配置的内存一样大。docker内存分配=docker使用+JVM堆使+Matespace元数据区,因为JVM感知获取不到docker内存限制,docker限制内存为2G的话,能够分配给JVM堆内存必然小于2G,如果java需要申请2G内存的话必然无法通过,这时候docker进程会被宿主机杀死,docker容器就会不断重启

2 如何解决

为了适配docker,java10引入参数-XX:+UseContainerSupport,默认值为true,该参数能使JVM读取到可用的CUP、内存等资源。
通过MaxRAMPercentageInitialRAMPercentageMinRAMPercentage可以设置JVM能够使用容器内存占比,比如docker分配了1GB内存,设置的参数为-XX:InitialRAMPercentage=50.0 和 -XX:MaxRAMPercentage=80.0那么JVM启动使用堆内存为50%*1024=512MB,最大可用堆内存为80%*1024=819.2MB。-Xmx -Xms已经成为过时配置。
另外,java8将永久代移除了(所以-XX:PermSize和-XX:MaxPermSize也被移除了),使用matespace代替,-XX:MetaspaceSize和-XX:MaxMetaspaceSize用来设置元数据初始和最大值,默认初始值20M左右,最大值为-1,也就是不限制最大值,最大值仅跟宿主机剩余内存有关,如果不调整最大值,且在宿主机内存充足的情况下,matespace永远不会出现OOM。如果设置了最大值,当拓展到该值就会进行FGC。由于FGC代价高,建议两个值设置一样大,并且要比默认值大,例如:内存为4G就,设置为128M。如果MaxMetaspaceSize设置过小,可能会导致OOM错误

线上docker服务频繁自动重启解决过程相关推荐

  1. 计算机一接上网线重新启动,一插上网线电脑会自动重启解决方法

    一插上网线电脑会自动重启解决方法,网线,解决方法,插上,自动重启,电脑 一插上网线电脑会自动重启解决方法 易采站长站,站长之家为您整理了一插上网线电脑会自动重启解决方法的相关内容. 今天遇到关于电脑的 ...

  2. JVM第六讲:线上环境 FGC 频繁,如何解决?

    本文是JVM第六讲:线上环境 FGC 频繁,如何解决?重点:得靠经验来解决 文章目录 1.问题背景 2.遇到的问题及解决方案 2.1.pinpoint 打点存在大批量300ms以上 2.2.应用 cp ...

  3. 面试官:线上环境 FGC 频繁,如何解决?

    前言 这个问题应该是 Java 面试中很经常被问到的一个题目,很多人害怕这个题目. 因为大部分人可能在工作中根本遇不到 FGC 频繁的问题,即使从网上背了点答案,心里也不踏实,因为毕竟不是自己亲自接触 ...

  4. 2008r2服务器频繁自动重启,解决windows server 2008 更新后不断重启现象

    今天遇到一台服务器提示windows2008r2系统更新失败,进入启动界面时提示:"未正确配置更新,正在还原更改,请勿关闭计算机!",不久就再次重新启动,然后不断自动重复这个过程. ...

  5. JVM垃圾回收与一次线上内存泄露问题分析和解决过程

    前言 内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果. Java是由C++发展来的,抛弃 ...

  6. 关于 idea 存在情况下的mac 自动重启 解决方式

    本人电脑型号:2018 mbp 13.3  macos 10.15.6 idea 在mac上 导致mac 频繁关机重启解决方式 当然是你去过售后 或者你自认为你的电脑的硬件是完全没有问题的情况下这样做 ...

  7. linux rac节点主机不定时重启,双节点RAC各个节点主机频繁自动重启故障解决

    双节点RAC各个节点主机频繁自动重启故障解决 [日期:2012-04-20] 来源:Linux社区 作者:ccz320 [字体:大 中 小] 5)         /etc/sysconfig/o2c ...

  8. Win10无故自动重启解决方法

    Win10正式版系统在使用过程中自动重启怎么解决呢?升级到Win10正式版系统后,在正常使用系统过程上,出现无故自动重启现象,通常此类情况是由硬件不兼容所造成的.对于此类问题我们可以通过以下方法来解决 ...

  9. 频繁gc是什么意思_一次性搞清楚线上CPU100%,频繁FullGC排查套路

    原标题:一次性搞清楚线上CPU100%,频繁FullGC排查套路 " 处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及 Full GC 次数过多的问题. 当然,这些 ...

最新文章

  1. pat1004. Counting Leaves (30)
  2. forfiles命令批量删除N天前文件
  3. LeetCode Construct Quad Tree(dfs)
  4. java异常_Java线程池「异常处理」正确姿势:有病就得治
  5. volatile可以保证原子性吗
  6. Mybatis学习IDEA(1)-环境搭建以及入门案例
  7. NodeJs同步、异步加载
  8. 加密软件漏洞评测系统_【E周道】Elasticsearch泄露12亿用户数据 开源VNC存在37个漏洞...
  9. apk ionic 破损_ionic3-android打包完美解决
  10. 第一次做socket的一些心得
  11. 小程序毕设作品之微信酒店预订小程序毕业设计(6)开题答辩PPT
  12. 计算机平面设计大专学校排名,平面设计学校排名哪些较好?
  13. 数字IC-1.2 用CMOS管构建逻辑门电路 及 逻辑化简方法(与、或、非、与非、或非)
  14. 关于DevExpress XtraReport 表格单合并单元格完整教程
  15. 为什么重写equals方法时必须重写hashcode方法
  16. 深圳一AI公司人脸数据泄露,超256万用户敏感信息在“裸奔”!
  17. 证券公司信息化2-投资银行业务是做什么的,怎样赚钱,IT在里边起到什么作用?
  18. C#利用绝对值打印菱形
  19. CloseHandle()、TerminateThread()、ExitThread()的区别
  20. 第九节课20180923

热门文章

  1. 【IoT】硬件PM系列(三):硬件产品经理需要掌握的定价策略
  2. SQL 修改列的长度
  3. 2019阿里巴巴内推首轮面试总结
  4. uni-app/微信小程序 解析 json 数据(thinkphp6),跨域问题
  5. java计算机毕业设计网上扶贫农产品销售系统源码+系统+数据库+lw文档+mybatis+运行部署
  6. 购车指南首次买车必看系列之(一): 保险篇
  7. php isset()和empty()的使用区别
  8. re 模块 常规方法使用
  9. SNMP/SMI研究总结
  10. 限流算法-常见的4种限流算法