概要
问题描述:在跑定时任务一段时间后,会出现管道断开的错误日志,并且Hs2的10000端口宕机。
分析方法:Hive日志、Jstat
目前解决方法:增大hiveserver2的Jvm内存
一、查看Hive日志
查看了最末日志和之前的日志,没有发现致命错误,确认不是代码的问题。
二、利用Jstat查看Jvm进程
ps -ef | grep HiveServer2 #查看hs2的pid
得到我的hs2的进程号为10221
启动我的程序后,利用以下命令监控Jvm
jstat -gcutil 10221 2000
nohup jstat -gcutil 10221 2000 > ~/hiveserver.gcutil.20220221.log 2>&1 & #输出到日志
没有启动程序前,FullGC次数为4,老年代垃圾为33.83%。
启动程序后,FullGC的次数猛涨,老年代垃圾比例也持续升高。
经过艰难的FullGC,老年代垃圾比率最终拉满。端口宕机。
三、结论与目前解决方法
随着时间的推移,不可回收的对象越来越多,最终导致OOM。
目前解决方法:增大hs2的jvm内存。
参考链接:HiveServer2 频繁宕机根本原因分析_*星星之火*的博客-CSDN博客_hiveserver2自动挂掉