rmi full gc问题_RMI强制Full GC每小时运行一次
rmi full gc问题
在我职业生涯中进行的所有故障排除练习中,我都感觉到,随着时间的推移,我所追寻的错误在不断演变,变得越来越卑鄙和丑陋。 也许仅仅是我的年龄开始了。这个特别的Heisenbug –看起来像这篇帖子一样,再次让我清醒了很多,而不是我想要的。
与其他特别令人讨厌的错误一样,我现在遇到的那个错误的症状是“有时系统运行缓慢”。 太好了,我已经感到脊椎发麻。 当我发现系统在生产中设置了一个简单的监视解决方案来监视系统时,情况变得更好了。 从本质上讲,它只不过是Pingdom ,它每秒测量一次响应时间,但是延迟图立即引起了我的注意。
在图中绘制的响应时间似乎是随机的尖峰–每次在蓝月亮中,响应开始花费的时间将近10倍。 不久之后,一切又恢复了正常。
最初的犯罪嫌疑人–看不见常规的cron工作或昂贵的报告流程。 存储监视也没有暴露任何特别丑陋的查询击中数据库。 但是在打电话之前,我在应用程序配置中添加了更多日志记录选项,重新启动了整个程序,并迷惑了自己的行为。
第二天早上,我还有其他事情要看,GC日志等。 十分钟之内,我发现自己盯着下面的东西:
11.408: [Full GC [PSYoungGen: 192K->0K(48640K)] [ParOldGen: 16324K->14750K(114688K)] 16516K->14750K(163328K) [PSPermGen: 31995K->31637K(64000K)], 0.1543430 secs] [Times: user=0.58 sys=0.00, real=0.16 secs]
...
3613.362: [Full GC [PSYoungGen: 256K->0K(47104K)] [ParOldGen: 15142K->13497K(114688K)] 15398K->13497K(161792K) [PSPermGen: 32429K->32369K(72192K)], 0.1129070 secs] [Times: user=0.51 sys=0.00, real=0.11 secs]
...
7215.278: [Full GC [PSYoungGen: 224K->0K(44544K)] [ParOldGen: 13665K->13439K(114688K)] 13889K->13439K(159232K) [PSPermGen: 32426K->32423K(70144K)], 0.0881450 secs] [Times: user=0.44 sys=0.00, real=0.09 secs]
...
现在,我可以将看似随机的性能下降与每次经过大约3600秒时运行的Full GC关联起来。 将VisualVM附加到JVM令我感到困惑–没有证据表明高内存使用率会导致整个垃圾收集器运行。 与开发人员核对后,我确定他们没有通过cron作业运行显式GC。 所以我站在那儿,对GC的常规性感到困惑。
工程师对问题感到困惑时会怎么做? 他谷歌 。 就在那里,凝视着我的脸。 与担心每小时进行一次完整GC的人员进行的逐页讨论,没有任何明显的原因。
罪魁祸首-RMI。 显然,当您的应用程序通过RMI公开其服务或通过RMI使用任何服务时,您必然会有一个额外的垃圾回收周期。 正如RMI文档所述 :
“当需要确保不导出不可达的远程对象并及时进行垃圾收集时,此属性的值表示Java RMI运行时允许在本地堆的垃圾收集之间允许的最大间隔(以毫秒为单位)。 默认值为3600000毫秒(一小时)。”
暂时的解决方案是将sun.rmi.dgc.server.gcInterval长度从默认的3,600秒增加。 我想知道,当RMI过去每分钟强制一次完整的GC时,在JDK 6中引入更改之前,情况看起来如何。 考虑到当时所有的EJB狂潮,我猜没有一个应用程序在性能方面有机会。 如果您有远古时代的回忆,也许您可以了解一下这些应用程序如何能够度过这种疯狂。
翻译自: https://www.javacodegeeks.com/2013/12/rmi-enforcing-full-gc-to-run-hourly.html
rmi full gc问题
rmi full gc问题_RMI强制Full GC每小时运行一次相关推荐
- RMI强制Full GC每小时运行一次
在我职业生涯中进行的所有故障排除练习中,我感到随着时间的推移,我所追寻的错误在不断发展,变得越来越卑鄙和丑陋. 也许仅仅是我的年龄开始了.这个特别的Heisenbug –看起来像这篇帖子一样,再次让我 ...
- GC 调优(实战篇) - GC参考手册
说明: Allocation Rate, 翻译为分配速率, 而不是分配率; 因为不是百分比,而是单位时间内分配的量; 同理, Promotion Rate 翻译为 提升速率; 您应该已经阅读了前面的章 ...
- 7. GC 调优(实战篇) - GC参考手册
本章介绍导致GC性能问题的典型情况.相关示例都来源于生产环境, 为演示需要做了一定程度的精简. 说明: Allocation Rate, 翻译为分配速率, 而不是分配率; 因为不是百分比,而是单位时间 ...
- JVM内存配置参数、GC工作原理及Minor GC、FullGC
对于JVM内存配置参数: -Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3 -Xms10240m 初始堆大小即最小内存值 XXSurvivorRat ...
- 53.垃圾回收算法的实现原理、启动Java垃圾回收、Java垃圾回收过程、垃圾回收中实例的终结、对象什么时候符合垃圾回收的条件、GC Scope 示例程序、GC OutOfMemoryError的示例
53.垃圾回收算法的实现原理 53.1.目录 53.2.启动Java垃圾回收 53.3.Java垃圾回收过程 53.4.垃圾回收中实例的终结 53.5.对象什么时候符合垃圾回收的条件? 53.5.1. ...
- 4、JVM垃圾回收机制、新生代的GC、GC(Minor GC、FullGC)、GC日志、JVM参数选项、元空间(笔记)
4.JVM垃圾回收机制 4.1.新生代的GC 4.1.1.串行GC(SerialGC) 4.1.2.并行回收GC(Parallel Scavenge) 4.1.3.并行GC(ParNew) 4.2.G ...
- Unity优化之GC——合理优化Unity的GC (难度3 推荐5)
原文链接: http://www.cnblogs.com/zblade/p/6445578.html 最近有点繁忙,白天干活晚上抽空写点翻译,还要运动,所以翻译工作进行的有点缓慢 =.= 本文续接前面 ...
- java gc full gc_Java中full gc什么意思?
慕雪6442864 除直接调用System.gc外,触发Full GC执行的情况有如下四种.1. 旧生代空间不足旧生代空间只有在新生代对象转入及创建为大对象.大数组时才会出现不足的现象,当执行Full ...
- Go 都在什么时候触发GC,能手动触发GC吗?
Go 语言作为一门新语言,在早期经常遭到唾弃的就是在垃圾回收(下称:GC)机制中 STW(Stop-The-World)的时间过长. 那么这个时候,我们又会好奇一点,作为 STW 的起始,Go 语言中 ...
最新文章
- [原][osg][gdal]两种方式修改tiff高程
- 5G服务可以解决的4个企业WAN挑战 - vecloud
- Linux应用程序设计之网络基础编程
- error: 'for' loop initial declarations are only allowed in C99 or C11 mode
- 查询数据去除后面无用的0_Python数据分析与实战
- jvm运行时类加载机制_JVM体系结构:JVM类加载器和运行时数据区
- 如何隐藏 video 元素的下载按钮
- spark内核揭秘-14-Spark性能优化的10大问题及其解决方案
- python不会怎么办_怕你还不会Python函数,我特意为你整理了一篇博客
- 学习ASP.NET Core Razor 编程系列三——创建数据表及创建项目基本页面
- 中国节能电梯市场趋势报告、技术动态创新及市场预测
- (一)PyQt5系列教程:使用PyQt5创建一个简单的demo
- 极域课堂管理系统软件如何取消控制_微缔电子组装业MES系统软件六大功能组成...
- android高效简洁的代码实现直播礼物效果
- vc开发记牌器的两种思路
- 日本京瓷株式会社会长-稻盛和夫寄语汇总
- html目录链接怎么做,word目录超链接怎么做
- 9.PMAC上位机-上位机发送指令
- 【Unity Shader学习笔记】(五)使用鼠标绘制自由多边形(附完整工程源码)
- Unity win平台 调整窗口大小强制固定比例