随着元空间的增长,应用程序正在放缓

Posted

技术标签:

【中文标题】随着元空间的增长,应用程序正在放缓【英文标题】:Applications is slowing with metaspace growth 【发布时间】:2019-03-28 19:03:20 【问题描述】:

我刚刚从 grails 2.4.3 迁移到 grails 2.5.6,从 Java 7 迁移到 Java 8。 我正在尝试在我的应用程序中设置最佳元空间大小。

实际元空间大小对应用程序性能有很大影响:

使用的元空间和响应平均时间:

200 MB - 339 毫秒 300 MB - 380 毫秒 400 MB - 430 毫秒 500 MB - 460 毫秒 600 MB - 530 毫秒

元空间在 90 分钟内从应用程序开始增长到 620MB。

这是我的实际 gc 设置:

 -Xms14G -Xmx14G\
 -XX:+UseG1GC\
 -XX:ParallelGCThreads=8\
 -XX:ConcGCThreads=4\
 -XX:MaxGCPauseMillis=200\
 -XX:+UseLargePages\
 -XX:+UseLargePagesInMetaspace\
 -XX:+AlwaysPreTouch\
 -XX:InitialBootClassLoaderMetaspaceSize=512M\
 -XX:MetaspaceSize=512M\
 -XX:MinMetaspaceExpansion=8M\
 -XX:MaxMetaspaceExpansion=32M\
 -XX:+UseStringDeduplication\
 -XX:+ParallelRefProcEnabled\
 -XX:-TieredCompilation\

当 MaxMetaspaceSize 设置为 512M 时,运行几个小时后,我的应用程序会在一小时内减慢 1 或 2 倍。响应时间大约是 10 秒。

有人遇到过这样的问题吗?在您的应用程序中,元空间对性能有这样的影响吗?

【问题讨论】:

我投票决定将此问题作为离题结束,因为诸如“有人遇到过这样的问题吗?在您的应用程序中,元空间对性能有如此影响?”之类的问题。在 *** 上没有用。 【参考方案1】:

您是否对您的应用进行了概要分析?

我想说Metaspace garbage collection 参与其中。它收集死类和类加载器,并在类元数据使用量达到 MaxMetaspaceSize(被-XX:MaxMetaspaceSize 缩小)时触发。

【讨论】:

当元空间达到最大值并且gc正在清除元空间时,平均时间会跳到1-10s。它每小时发生 1-2 次。 第一个图表上的 imgur.com/a/b7UAmOR 是平均时间和第二个元空间大小。正如你所看到的,没有工作 gc 平均时间正在增长。

以上是关于随着元空间的增长,应用程序正在放缓的主要内容,如果未能解决你的问题,请参考以下文章

服装批发亟待转型,破局需靠模式创新

Gartner:2022年全球半导体收入增长预计将放缓至7%,远低于2021年26.3%

如何随着无限图的增长不断产生Perlin噪声?

三星和苹果手机增长放缓 能给中国手机机会吗?

元宇宙大爆发 ,为Filecoin带来新的增长空间

一边裁员一边拓展,字节跳动增速放缓