首页 > 其他分享 >Hive FGC 问题排查步骤

Hive FGC 问题排查步骤

时间:2024-05-20 22:40:16浏览次数:25  
标签:accessToken get eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ Hive 

背景:
本文FGC排查方法包含 Metastore 和 HiveServer2服务,Metastore是一个相对成熟的服务,通常情况下不会发生特殊的异常,Hive FGC 通常是由两种情况导致:
一是因为任务量得到增长导致现有服务示例不能满足当前任务的请求量,这类情况通过查看对应服务的连接数,任务数量的监控即可快速得出;
二是因为上层业务使用用法不恰当导致,例如发起一些全分区扫描的HQL,是可能导致发生系统异常。
本文我们重点介绍因第二种情况。

FGC排查
针对因上层业务使用用法不恰当导致的FGC,核心问题找到这个任务,只有找到任务后才能让用户停止执行并进行修正,从根本上解决这个问题,具体排查方法是如下:

step1、从Metastore侧进行排查
查看Metastore进程最多的20个存活对象。
通过命令 jmap -histo:live $PID| head -n20
图片: /uploader/f/CfCIVHGHAq0ZbP3s.png?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE3MTYyMDE5NDIsImciOiJ2VnFSVmVtWmdvU1BydnF5IiwiaWF0IjoxNzE2MjAxOTEyLCJ1c2VySWQiOjUzMjl9.w_18GjJKa8sW8quRyL2DdBntrza8aTpF3ick6DVhBZo
存在的对象很多,但是对应不到对应的接口,更对应不到任务,只能初步判断一些大概的方向,比如,jdbc连接相关对象过多等信息,此步如果没有更具体的对象信息则较难判断;

通过mat查看具体的对象信息
jmap -dump:format=b,file=hms.hprof $pid

./ParseHeapDump.sh hms.hprof org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components。
使用浏览器打开index.html文件内容,查看分析报告
图片: /uploader/f/1KGr6dGUFmHYWMTo.png?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE3MTYyMDE5NDIsImciOiJ2VnFSVmVtWmdvU1BydnF5IiwiaWF0IjoxNzE2MjAxOTEyLCJ1c2VySWQiOjUzMjl9.w_18GjJKa8sW8quRyL2DdBntrza8aTpF3ick6DVhBZo
查看Class Histogram一项
图片: /uploader/f/7QShzCeVYlkhUJsB.png?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE3MTYyMDE5NDIsImciOiJ2VnFSVmVtWmdvU1BydnF5IiwiaWF0IjoxNzE2MjAxOTEyLCJ1c2VySWQiOjUzMjl9.w_18GjJKa8sW8quRyL2DdBntrza8aTpF3ick6DVhBZo

step2、查找可疑的Metastore操作
从内存升高这个表象关联到可疑的Metastore命令,查看对应Metastore的审计日志,通过审计日志查看出现问题时间段的执行命令,主要查看执行的API次数和执行所涉及的库表信息,例如发生问题时间段未10:30~10:35,那么使用如下命令进行统计API调用次数
拿到10:30~10:35之间的日志
awk '$0 >= "2024-05-16T10:30:00" && $0 <= "2024-05-16T10:35:00"' hive-audit.log.2024-05-16 > hive-range.log
获取API调用次数
grep -v 'local RawStore' hive-range.log |awk '{print $8}'|sort|uniq -c
图片: /uploader/f/rnAcrDP9X7pUuEiI.png?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE3MTYyMDE5NDIsImciOiJ2VnFSVmVtWmdvU1BydnF5IiwiaWF0IjoxNzE2MjAxOTEyLCJ1c2VySWQiOjUzMjl9.w_18GjJKa8sW8quRyL2DdBntrza8aTpF3ick6DVhBZo
重点关注get_multi_table,get_partitions,get_partitions_ps_with_auth,drop等可能涉及大分区操作的API调用,通过审计日志找到对应提交的客户端IP和用户来定位上层业务异常任务,例如如下get_multi_table 如果高频调用因每次均会扫描该数据库下的所有表,即会引发FGC
图片: /uploader/f/J6XOwNpPfCYfFNUY.png?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE3MTYyMDE5NDIsImciOiJ2VnFSVmVtWmdvU1BydnF5IiwiaWF0IjoxNzE2MjAxOTEyLCJ1c2VySWQiOjUzMjl9.w_18GjJKa8sW8quRyL2DdBntrza8aTpF3ick6DVhBZo

step3、通过火焰图排查
火焰图使用方法:https://arthas.aliyun.com/en/doc/profiler.html#specify-execution-time
图片: /uploader/f/dNwU8wfZbdv8SEoC.png?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE3MTYyMDE5NDIsImciOiJ2VnFSVmVtWmdvU1BydnF5IiwiaWF0IjoxNzE2MjAxOTEyLCJ1c2VySWQiOjUzMjl9.w_18GjJKa8sW8quRyL2DdBntrza8aTpF3ick6DVhBZo

火焰图就是看顶层的哪个函数占据的宽度最大。只要有"平顶"(plateaus),就表示该函数可能存在性能问题。
根据上图可以看到,get_all_functions、get_database命令占用的内存最多,初步怀疑这个命令比较可疑。。到了这一步,就要开始第二阶段的排查了。使用平台提供的监控排查问题时间窗口所有get_all_functions命令的执行情况,如下图所示:
图片: /uploader/f/1AQJq1NrEJn3GhQg.png?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE3MTYyMDE5NDIsImciOiJ2VnFSVmVtWmdvU1BydnF5IiwiaWF0IjoxNzE2MjAxOTEyLCJ1c2VySWQiOjUzMjl9.w_18GjJKa8sW8quRyL2DdBntrza8aTpF3ick6DVhBZo
这个时间段发生了多次扫描get_all_functions的请求,因为是临时函数,每次均需要进行注册和拉取,对Hive Metastore造成很大的性能影响。

标签:accessToken,get,eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ,Hive,
From: https://www.cnblogs.com/qiaoyihang/p/18202969

相关文章

  • java应用CPU占用率过高排查
    1.背景服务器CPU使用率告警,紧急排查。2.排查思路2.1top查看各进程的CPU占用率top查到进程的pid2.2查看该进程的所有线程top-Hp<pid>发现大量的GCtaskthread#的cpu使用超过90%,定位到时频繁GC导致,可能是内存不足引起#jstat监控GC情况,其中:<vmid> 是Java虚拟机......
  • Linux 系统故障排查思路
    导读有时候会遇到一些疑难杂症,并且监控插件并不能一眼立马发现问题的根源。这时候就需要登录服务器进一步深入分析问题的根源。那么分析问题需要有一定的技术经验积累,并且有些问题涉及到的领域非常广,才能定位到问题。所以,分析问题和踩坑是非常锻炼一个人的成长和提升自我能力。如......
  • 日常Bug排查-偶发性读数据不一致
    日常Bug排查-偶发性读数据不一致前言日常Bug排查系列都是一些简单Bug的排查。笔者将在这里介绍一些排查Bug的简单技巧,同时顺便积累素材。Bug现场业务场景先描述这个问题出现的业务场景。这是一个支付的场景,如果支付成功了,我们就把支付状态置为success(主单据更新)同时写入支......
  • 在Linux中,如何排查系统崩溃问题?
    排查Linux系统崩溃问题通常是一个复杂的过程,需要系统管理员具备对系统运行机制的深入了解,并且需要使用一系列的工具和方法来定位和解决问题。以下是一些排查系统崩溃问题的步骤:1.收集崩溃时的信息询问用户:了解用户在使用系统时遇到的问题,崩溃前后的系统表现。崩溃时间:记录系......
  • 在Linux中,如何排查性能下降问题?
    在Linux中排查性能下降问题,通常需要一个系统性的方法来分析和定位瓶颈所在。以下是排查性能问题的一般步骤和工具:1.监控整体系统状态top/htop:使用top或更友好的htop命令实时查看CPU使用率、内存占用、进程状态等基本信息。uptime:查看系统运行时间及平均负载,平均负载超过C......
  • 在Linux中,如何排查死锁问题?
    在Linux中排查死锁问题通常涉及监控系统状态、分析进程行为和资源使用情况,以及使用特定的工具来辅助诊断。以下是一些常见的步骤和工具:1.观察系统状态使用top或htop:这些工具可以实时显示系统负载、CPU使用率、内存占用以及所有运行中的进程。死锁可能导致某些进程长时间不......
  • 一次nginx文件打开数的问题排查处理
     现象:nginx域名配置合并之后,发现consul-template无法完成nginx重载,然后发现需要重启nginx,才能让配置生效。注意:下次哪个服务有报错,就看重启时所有日志输出,各种情况日志输出。不要忽略细节。很多时候其实已经看到了问题,却没有深入查看问题。  查看进程最大打开文件个数#ca......
  • hive写入star,csv格式的streamload-简单版
    hive写入star,csv格式的streamload注意字符串中的转移字符直接拼接\n而要显示\\是非转义字符publicclassGcyDataTrans{privatestaticStringSTARROCKS_HOST="IP";privatestaticStringSTARROCKS_HTTP_PORT="8030";privatestaticStringSTARROCKS_DB......
  • 网址能ping通但浏览器打不开排查
    公司电脑访问www.123pan.com打不开,先后做了如下调整:1.可能是之前系统设置了手动代理,导致无法访问正常网页,可以关闭掉系统代理设置,如下: 2.win+r->cmd->ipconfig/flusdns刷新dns缓存: 3.DNS服务器配置问题检查并重新配置DNS服务器,如:14.114.114.1148.8.8.8172.3......
  • 首次尝试SeaTunnel同步Doris至Hive?这些坑你不能不避
    笔者使用SeaTunnel2.3.2版本将Doris数据同步到Hive(cdh-6.3.2)首次运行时有如下报错,并附上报错的解决方案:java.lang.NoClassDefFoundError:org/apache/hadoop/hive/metastore/api/MetaExceptionjava.lang.NoClassDefFoundError:org/apache/thrift/TBasejava.lang.NoClassDe......