Hiveserver2阻塞原因排查
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hiveserver2阻塞原因排查相关的知识,希望对你有一定的参考价值。
参考技术A 在修改表location与默认的hdfs机器不一致导致hiveserver2阻塞使用jstack排查发现如下信息、由日志输出328线程,后续执行查询会日志线程为209但不会输出sql,发现是waiting状态,看栈信息是在执行tryAcquireCompileLock方法,看到源码发现是未开启并行parseSql配置
记一次生产环境线程阻塞的排查
1、使用top命令查找出消耗最多的进程id
$ top #进程
$ top -H #线程
2、查看进程中具体线程的资源消耗情况
$ strace -p [线程ID]
3、将线程ID转成16进制
$ printf "%x\n" [线程ID]
4、查找具体阻塞的代码中的方法
$ jstack [进程ID] |grep [转好的16进制] -A 30
5、其他的一些常用命令
$ htop #top的升级版,一般需要安装,centos7安装如下
$ yum install epel-release -y
$ yum install htop -y
6、jstat和jmap(此仅限于了解,待做详细总结)
jstat -class [进程ID] #查看加载了多少类以及对应的信息
jstat -compiler [进程ID] #查看编译的数量, 成功和失败的数量和类型
jstat -gc [进程ID] #查看垃圾回收的统计信息
通过jstat可以对jvm堆的内存进行统计分析,而jmap可以获取到更加详细的内容
如:内存使用情况的汇总、对内存溢出的定位与分析。
jmap -heap [进程ID] #heap内存的使用情况
jmap -histo [进程ID] | more #查看内存中对象数量及大小
jmap -histo:live [进程ID] | more #查看内存中对象活跃数量及大小
jmap -dump:format=b,file=/tmp/dump.dat [进程ID] #将内存使用情况dump到文件中
jhat -port [端口] dump.dat #通过jhat对dump文件进行分析
以上是关于Hiveserver2阻塞原因排查的主要内容,如果未能解决你的问题,请参考以下文章