美文网首页大数据
Hive 子进程死循环问题排查

Hive 子进程死循环问题排查

作者: 群演_ | 来源:发表于2018-06-23 18:30 被阅读6次

线上有个任务失败了,查看工作机器上运行的进程情况,有个进程比较陌生,如下图


查看进程关系,可以看到这是hive起的一个子进程,如下图
使用top命令查看cpu 使用情况,可以看到1193这个线程cpu占用总是接近100%,如下图
使用jstack命令,查看线程状态
看样子是在读取conf 文件,没有什么异常。然而过了一会儿再看这个状态,线程栈没有丝毫变化。而cpu使用仍然接近100%。一般来说这是进入死循环了。重试那个hive命令,发现问题无法重现,排除了conf文件的配置问题。使用strace命令查看系统调用情况
发现也没有系统调用,确认是在用户态。那么应该就是代码中的bug,查看DefferredDocumentImpl.getNodeExtra 函数的代码,然而并没有循环。
这就很奇怪了,看getNodeExtra函数的代码,思来想去也不可能进入死循环。难道是内存漏洞引起的指令指针被改写,导致执行到莫名其妙的地方去了?这个时候我就希望看到1193这个线程现在在执行什么指令,总之应该不是getNodeExtra这个函数。那么jstack能不能输出这个信息呢。jstack --help看一下
虽然不是我想要的具体在执行什么指令,不过也许问题确实出在本地方法栈呢。试一下
看到问题真的出在本地方法,搜了一下关键字,找到了JDK的patch:https://bugs.openjdk.java.net/browse/JDK-8153134

这个问题的详细描述:https://marc.info/?l=openjdk-hotspot-compiler-dev&m=147625599902638&w=2

可见这是一个小概率的并发问题,由于我们线上集群也是第一次出现,决定暂不处理,直接重试任务即可。

相关文章

  • Hive 子进程死循环问题排查

    线上有个任务失败了,查看工作机器上运行的进程情况,有个进程比较陌生,如下图 这个问题的详细描述:https://m...

  • ☆技术问答集锦(二)

    4 如何通过JDK命令,分析排查死锁、死循环? top 命令:显示当前的活动进程,默认它是按消耗 CPU 的厉害程...

  • 【Hive问题 1】Hive 类型异常问题排查

    最近在执行Hive SQL的时候遇到一个类型转换异常的错误,无法将Text类型转换为Long。由于异常信息栈比较多...

  • Redis 持久化

    目录: RDB AOF 持久化恢复 问题排查和性能优化fork 操作子进程开销AOF 追加阻塞单机多实例部署 总结...

  • hive insert overwrite directory

    图片看不到的可以看我的CSDN的博客hive insert overwrite directory 问题排查 一、...

  • hive任务被杀问题排查

    背景 hive 任务运行中被自己kill 掉,而日志中都是很正常的没有报错 排查 hive client 预编译s...

  • Java相关的性能调优方案

    本文介绍了在性能测试过程中Java进程消耗CPU过高的问题排查方法、线程死锁问题排查方法和内存泄露的排查方法 Ja...

  • OOM排查

    一般CPU100%疯狂GC,都是死循环的锅,那怎么排查呢? 1):先进服务器,用top -c 命令找出当前进程的运...

  • 《作死故障篇三》- 如何快速定位死循环

    项目发布后,发现机器的cpu飙升,load升高。在排查问题的过程中首先想到的应该是排查一下死锁、死循环。死锁与死循...

  • 记一次Hive任务hang住的问题(2)

    1 背景 线上Hive任务偶尔出现hang住的现象.经排查确认是触发了Hive的bug, 该bug在Hive-10...

网友评论

    本文标题:Hive 子进程死循环问题排查

    本文链接:https://www.haomeiwen.com/subject/rnldyftx.html