jvm间歇性崩溃分析

news/2024/7/8 3:35:45

http://www.cnblogs.com/LBSer/p/4417148.html

1 问题描述     

      某服务有两台机器,每隔几天会报警load高,一开始看监控发现gc时间抖动很大,以为是发生了fullgc引起卡顿而未加注意,之后登入线上机器查看日志发现是jvm崩溃导致了服务重启从而引发gc时间抖动。以某天为例,该服务分别在上午7点和上午10点发生jvm崩溃,如果同时发生崩溃将导致线上停服,后果不堪设想。

2 问题分析

     崩溃日志显示jvm崩溃发生在在标记清除扫根路径时。

     搜索此bug,发现是jvm的一个已知bug,https://bugs.openjdk.java.net/browse/JDK-8020236,这个bug在1.6和1.7中均有,只是因为重现困难而一直未被修复。

                Par_MarkFromRootsClosure::scan_oops_in_oop(HeapWord*)

 

      有人遇到和我们一样的问题(http://hllvm.group.iteye.com/group/topic/43404),他通过压测发现当“ParallelCMSThreads > ParallelGCThreads”会引起此崩溃,而当"ParallelCMSThreads <= ParallelGCThreads"时问题不再复现。而ParallelCMSThreads > ParallelGCThreads”这个问题也在jvm bug列表中(https://bugs.openjdk.java.net/browse/JDK-6668573),此bug下有人给出的解决思路是将ParallelCMSThreads 设置为 <=ParallelGCThreads。

3 解决方法

        查看我们junglepoi-service服务的jvm参数配置,发现ParallelCMSThreads被设置成4,而ParallelGCThreads却未被设置。默认情况下ParallelGCThreads = (ncpus <= 8) ? ncpus : 3 + ((ncpus * 5) / 8),其中ncpus是机器的核数,由于junglepoi-service服务所在的机器为2核4G配置,因此默认情况下ParallelGCThreads=2,此时ParallelCMSThreads > ParallelGCThreads。       

       解决方法是:1)将ParallelCMSThreads设置为2或1;2)或者不设置ParallelCMSThreads,默认情况下ParallelCMSThreads = (ParallelGCThreads + 3) / 4,如果不设置默认ParallelCMSThreads=(2+3)/4=1。

       我们将ParallelCMSThreads设置为2,上线两天未复现jvm崩溃异常,后续将持续观察。

4 启示

       不能简单拷贝其它项目的jvm参数配置,需要结合项目特点、机器环境等各方面信息来综合配置。

转载于:https://www.cnblogs.com/LBSer/p/4417148.html


http://www.niftyadmin.cn/n/3497432.html

相关文章

oracle自治事务的写法_Oracle自治事务实际用例

如下&#xff0c;新建两个存储过程&#xff1a;在主自治事务中&#xff0c;我们插入一条记录&#xff0c;然后在自治事务中&#xff0c;查看表中行数&#xff0c;然后尝试插入三条记录&#xff0c;查看行数&#xff0c;最后rollback 查看行数&#xff0c;最后返回主事务&#x…

2021年10月记录(原生sql分页)

1.[转]C# 中的.pdb/ .vshost.exe/ .vshost.exe.manifest文件讨论[转]C# 中的.pdb/ .vshost.exe/ .vshost.exe.manifest文件讨论 - 紫痕o - 博客园 pdb文件&#xff1a; 英文全称&#xff1a;Program Database File 中文全称&#xff1a;程序数据库 文件 Debug里的PDB是full…

iOS presentViewController 跳转黑屏现象解析

在利用stroyboard开发&#xff0c;有时候利用 TestViewController *control[[TestViewController alloc]init]; [self presentModalViewController:control animated:YES];来进行跳转的时候&#xff0c;有时候跳过去是黑屏&#xff0c;但是传输过去的数据可以通过log打印出来&a…

最近发生了真多不可思意的事情

先是最近最热门的“三鹿奶粉事件”让人感觉一些企业的没有良知&#xff0c;然而万万没有想到的是&#xff0c;居然会牵扯出全国上上下下的奶粉企业&#xff0c;甚至包括猛牛、伊利、雅士利这样的牌子&#xff0c;而且还称之为"行业规则“&#xff01;而每每想到自己从小吃…

一招解决OFFICE word各种崩溃问题

%appdata%\microsoft\templates 有的时候点击miscrosoft office word的时候会出现错误&#xff0c;之后提示安全模式打开等等情况&#xff0c;打不开是因为“normal.dot”这个文件在作怪&#xff0c;有时候你去网上搜&#xff0c;人家会告诉你把这个文件删掉&#xff0c;之后给…

mongodb数据库扩展名_MongoDB数据库

MongoDBMongoDB是一款强大、灵活、且易于扩展的通用型数据库。1、易用性MongoDB是一个面向文档(document-oriented)的数据库&#xff0c;而不是关系型数据库。不采用关系型主要是为了获得更好得扩展性。当然还有一些其他好处&#xff0c;与关系数据库相比&#xff0c;面向文档的…

爱创课堂每日一题九十八天- 行内元素有哪些?块级元素有哪些?CSS的盒模型?

块级元素&#xff1a;div p h1 h2 h3 h4 form ul行内元素: a b br i span input selectCss盒模型:内容&#xff0c;border ,margin&#xff0c;padding转载于:https://blog.51cto.com/12864747/2066870

实战Nginx与PHP(FastCGI)的安装、配置与优化(转载)

文章转自http://ixdba.blog.51cto.com/2895551/806622 &#xff0c;本文出自 “技术成就梦想” 博客 一、什么是 FastCGIFastCGI是一个可伸缩地、高速地在HTTP server和动态脚本语言间通信的接口。多数流行的HTTP server都支持FastCGI&#xff0c;包括Apache、Nginx和lighttpd等…