记录Flink 线上碰到java.lang.OutOfMemoryError: GC overhead limit exceeded如何处理?

这篇具有很好参考价值的文章主要介绍了记录Flink 线上碰到java.lang.OutOfMemoryError: GC overhead limit exceeded如何处理?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这个问题是Flink TM内存中我们常见的,看到这个问题我们就要想到下面这句话:

程序在垃圾回收上花了很多时间,却收集一点点内存,伴随着会出现CPU的升高。

是不是大家出现这个问题都会出现上面这种情况呢。那我的问题出现如下:

记录Flink 线上碰到java.lang.OutOfMemoryError: GC overhead limit exceeded如何处理?,Flink,java,flink,开发语言

发现JVM Heap堆内存过高。那么堆内存包含2块:

framwork heap 一般设置是128MB,基本上不会出问题

task heap 是我们用户写代码所使用的的堆内存,那我们就要考虑是不是自己业务代码有问题吗?

所以我使用以下判断方法发现问题的。

1 查看某个TM的堆内存占用是否过高,如果过高,通过页面的端口号找到该TM的PID。操作如下:

例:akka.tcp://flink@IP:23567/user/taskmanager_0

找到这个IP的端口,使用 netstat 找到PID  --->  netstat -atunpl | grep 23567

tcp6       0      0 :::23567                :::*                    LISTEN      3081/java  
   

得到该TM的进程为3081

2 利用命令:jmap -histo:live pid 对该PID进行操作

命令:jmap -histo:live 3081  | head -20  得到

 num     #instances         #bytes  class name
----------------------------------------------
   1:      24781126      792996032  java.util.HashMap$Node
   2:      21094139      737237032  [C
   3:      21094065      506257560  java.lang.String
   4:       1560788      225984352  [Ljava.util.HashMap$Node;
   5:       1557686       74768928  java.util.HashMap
   6:        195141       59546144  [B
   7:       1198174       38341568  java.util.concurrent.ConcurrentHashMap$Node
   8:       1548207       24771312  com.alibaba.fastjson.JSONObject
   9:         39805        9853696  [Ljava.lang.Object;
  10:          1225        9522400  [Ljava.util.concurrent.ConcurrentHashMap$Node;
  11:        157686        5045952  org.apache.hadoop.hbase.Key

发现使用HashMap占用太多,寻找自己使用HashMap的方法进行排查,发现没有释放HashMap内数据导致堆内存一直增加。

最后希望我这种判断方式对大家都有帮助!

欢迎大家关注公众号

记录Flink 线上碰到java.lang.OutOfMemoryError: GC overhead limit exceeded如何处理?,Flink,java,flink,开发语言文章来源地址https://www.toymoban.com/news/detail-778072.html

到了这里,关于记录Flink 线上碰到java.lang.OutOfMemoryError: GC overhead limit exceeded如何处理?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • com.github.oshi-3.9.1 java.lang.OutOfMemoryError: GC overhead limit exceeded 排查思路

    1.Disabling the error check altogether, via “-XX:-UseGCOverheadLimit”. 此种方式最终会改报错为java.lang.OutOfMemoryError: Java heap space(治标不治本) 2.增大堆内存。既然堆内存少了,那就增加堆内存即可,-Xms64M -Xmx64M  ,如果存在内存泄漏,那还是治标不治本    3.优化内存泄漏的代码(终极

    2024年02月03日
    浏览(38)
  • Flink 运行错误 java.lang.OutOfMemoryError: Direct buffer memory

    如遇到如下错误,表示需要调大配置项 taskmanager.memory.framework.off-heap.size 的值,taskmanager.memory.framework.off-heap.size 的默认值为 128MB,错误显示不够用需要调大。 2022-12-16 09:09:21,633 INFO  [464321] [org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:366)]  - Hadoop UGI auth

    2024年02月03日
    浏览(42)
  • 分析和解决java.lang.OutOfMemoryError: Java heap space问题

    最近客户反馈在生产环境导入操作时遇到任务一直执行中,并且入库的数据量一直不改变。通过日志查询,终于定位到报错信息如下: java.lang.OutOfMemoryError: Java heap space (JVM 堆空间溢出)简单来说就是在创建新的对象时, 堆内存中的空间不足以存放新创建的对象,导致此种问题

    2024年02月05日
    浏览(37)
  • es内存溢出启动报错java.lang.OutOfMemoryError: Java heap space

    问题: es容器自己停止,重启之后启动失败,报错如下: 原因: 容器中es由于数据量过大,超过了elasticsearch进程的最大内存量,elasticsearch 会将启动脚本中的JAVA_OPTS 选项传递给 JVM 来启动elasticsearch. 其中最重要的一个参数是 -Xmx ,此参数用于控制系统分配给elasticsearch 进程的

    2023年04月14日
    浏览(47)
  • 解决idea出现的java.lang.OutOfMemoryError: Java heap space的问题

    今天使用 idea 开发时,突然报出如下错误:

    2023年04月19日
    浏览(34)
  • java.lang.OutOfMemoryError- unable to create new native thread 问题排查

    最近连续两天大约凌晨3点,线上服务开始异常,出现OOM报错。且服务所在的物理机只能ping通,但是无法登录。报错信息如下: 根据日志OOM报错,怀疑是内存不足或内存泄露的原因,需要查看内存的使用情况。考虑到 JConsole 或 VisualVM 具有可视化界面,能看出历史变化趋势,

    2023年04月13日
    浏览(79)
  • 使用jmeter做性能测试时遇到java.lang.OutOfMemoryError: Java heap space. 提示怎么办

    使用jmeter做性能测试遇到java.lang.OutOfMemoryError: Java heap space.时是jvm的问题,需要调大jvm的内存,windows压力机通过编辑bin文件下的jmeter.bat文件来修改jvm的内存大小。在jmeter.bat文件的编辑状态下查询if not defined HEAP可快速查找到需要修改的位置。 修改前为默认大小: 修改后(根

    2024年02月16日
    浏览(45)
  • 接口报错原因分析:handler dispatch failed;nested exceptionis java.lang.outofMemoryError:JAVA heap space

    java.lang.OutOfMemoryError: Java heap space  解决方法 这个问题的根源是jvm虚拟机的默认Heap大小是64M,可以通过设置其最大和最小值来实现.设置的方法主要是几个. 加上 JAVA_OPTS=-Xms64m -Xmx512m Linux 在{tomcat_home}/bin/catalina.sh的前面,加

    2024年02月08日
    浏览(38)
  • Windows下运行Tomcat服务时报GC Overhead Limit Exceeded

    根本原因是在新建Tomcat作为Windows服务时,系统默认设置的堆内存太小了,我们打开/bin/service.bat文件,将如下图所示的默认值改大一些就好了 然后我们删除掉原来创建的Tomcat服务,重新创建依次Tomcat服务即可

    2024年02月13日
    浏览(29)
  • idea maven 打包 内存溢出 报 GC overhead limit exceeded -> [Help 1]

    idea 使用maven打包 报GC overhead limit exceeded - [Help 1] 解决方法: 打开settings - 点开如同所示 将 vm Options 参数 设为 -Xmx8g 

    2024年04月10日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包