程序刚启动,发生三次FullGc的问题追踪-阿里云开发者社区

开发者社区> jworldexpo> 正文

程序刚启动,发生三次FullGc的问题追踪

简介: 程序刚启动,发生三次FullGc的问题追踪,原因定位到JVM的默认参数Metaspace初始值和最大值是需要设置
+关注继续查看

问题现象

fe55baf9-d4d3-4765-a805-689b867b2386.png

从截图可以看出,程序刚启动发生了3次FullGc, 13次YGC

开启打印GC日志的命令

-XX:+PrintGCDetails -XX:+PrintGCTimeStamps 

GC详细日志如下
[GC (Allocation Failure) [PSYoungGen: 65536K->6408K(76288K)] 65536K->6416K(251392K), 0.0148227 secs] [Times: user=0.02 sys=0.00, real=0.02 secs] 
[GC (Allocation Failure) [PSYoungGen: 71944K->10063K(76288K)] 71952K->10151K(251392K), 0.0088836 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[GC (Metadata GC Threshold) [PSYoungGen: 41843K->7930K(76288K)] 41931K->8026K(251392K), 0.0055550 secs] [Times: user=0.06 sys=0.00, real=0.01 secs] 
[Full GC (Metadata GC Threshold) [PSYoungGen: 7930K->0K(76288K)] [ParOldGen: 96K->7795K(89088K)] 8026K->7795K(165376K), [Metaspace: 20582K->20568K(1067008K)], 0.0237734 secs] [Times: user=0.02 sys=0.00, real=0.02 secs] 
[GC (Allocation Failure) [PSYoungGen: 65536K->4667K(120320K)] 73331K->12471K(209408K), 0.0032643 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
[GC (Allocation Failure) [PSYoungGen: 119867K->10564K(136192K)] 127671K->18375K(225280K), 0.0078389 secs] [Times: user=0.03 sys=0.03, real=0.01 secs] 
[GC (Allocation Failure) [PSYoungGen: 136004K->12791K(207872K)] 143815K->21645K(296960K), 0.0098903 secs] [Times: user=0.02 sys=0.00, real=0.01 secs] 
[GC (Metadata GC Threshold) [PSYoungGen: 173010K->15352K(210432K)] 181864K->24278K(299520K), 0.0093598 secs] [Times: user=0.02 sys=0.00, real=0.01 secs] 
[Full GC (Metadata GC Threshold) [PSYoungGen: 15352K->0K(210432K)] [ParOldGen: 8926K->20725K(139264K)] 24278K->20725K(349696K), [Metaspace: 34021K->34007K(1079296K)], 0.0524986 secs] [Times: user=0.09 sys=0.00, real=0.05 secs]
[GC (Allocation Failure) [PSYoungGen: 195072K->11399K(306688K)] 215797K->32133K(445952K), 0.0121779 secs] [Times: user=0.02 sys=0.00, real=0.01 secs].
[GC (Allocation Failure) [PSYoungGen: 306311K->17380K(342016K)] 327045K->51832K(481280K), 0.0195859 secs] [Times: user=0.06 sys=0.00, real=0.02 secs]
[GC (Metadata GC Threshold) [PSYoungGen: 137137K->25060K(401408K)] 171589K->61916K(540672K), 0.0181306 secs] [Times: user=0.03 sys=0.03, real=0.02 secs] 
[Full GC (Metadata GC Threshold) [PSYoungGen: 25060K->0K(401408K)] [ParOldGen: 36855K->45564K(206848K)] 61916K->45564K(608256K), [Metaspace: 56321K->56281K(1099776K)], 0.1520313 secs] [Times: user=0.39 sys=0.00, real=0.15 secs]
[GC (Allocation Failure) [PSYoungGen: 400103K->16619K(488960K)] 445675K->62199K(695808K), 0.0124262 secs] [Times: user=0.06 sys=0.00, real=0.01 secs] 
[GC (Allocation Failure) [PSYoungGen: 484587K->30713K(498688K)] 530167K->82583K(705536K), 0.0273914 secs] [Times: user=0.06 sys=0.00, real=0.03 secs]

问题分析

从日志来看,FullGC三次都发生在 Full GC (Metadata GC Threshold)

old区离最大配置还很远,Metaspace区并没有真正释放空间,所以怀疑是Metaspace区不够用了

使用 java -XX:+PrintFlagsFinal -version 查看默认参数值为 21 MB,最大值为4096M = 4G

0bf6d127-25fc-450d-85e6-8201150358ef.png

翻阅资料后,得知JDK8中,-XX:MaxMetaspaceSize是没有上限的,与机器内存相关,但初始的默认值只有21M,所以得出结论是,因为metaspace空间不足导致发生了FullGC

解决方案

JDK1.8之后,永久代(PermGen)概念被废弃掉了,取而代之的是Metaspace的存储空间,它使用的是本地内存,而不是堆内存,它的大小与本地内存有关。

最终通过设置JVM启动参数-XX:MetaspaceSize=256M 解决了该问题。

-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m

67c2b55d-cdd2-49ff-8b6f-b7161a6f422b.png

483f328d-9221-4050-9567-706abed2d98d.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
3992 0
Cassandra源码解析系列启动模块
Cassandra源码解析之初始化
1033 0
总奖金高达180万元 蚂蚁金服启动区块链创新大赛
蚂蚁区块链创新大赛正式启动啦!
10584 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
3950 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
5657 0
+关注
2
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载