永久函数内存泄露问题分析报告


1基本信息[Basic Information]

生产环境:是

集群规模:52+3台物理机,每台128G内存;CPU:2*16C;SATA磁盘,2T*12

  • hadoop社区版本:2.7.2
  • 商业版本:FusionInsight_HD_V100R002C60U10
  • MetaStore:高斯数据库(Postgresql)

2问题描述[Problem Description]

在生产环境中发现hiveserver在去掉临时函数,使用永久函数后,hiveserver的内存依然在增加,最终导致full gc

3问题分析[Problem Analysis]

1.更换成永久函数后,发现还是有内存泄露,经过分析,永久函数每次在新建会话中使用的时候,都重新内部执行了add jar的操作,并不是之前认为的每次hiveserver启动创建一次,大概这样做的目的使用户函数在更新了jar包后,可以即时生效,而不用重启hiveserver。

2.将泄漏代码改完后,临时函数,永久函数都持续运行,内存在增加后,后续会被回收,不再泄漏。

4根本原因[Root Cause]

根本原因是永久函数内存泄露导致频繁Full GC,从而导致JVM响应慢。

5解决措施[Corrective Action]

5.1临时解决措施[Workaround]

1.使用永久函数会降低内存泄漏的速度

2.需要定期手动滚动重启内存快满的hiveserver

5.2最终解决措施[Solution]

在U10SPC003中解决这个bug

DTS2016112412875

6规避措施[Preventive Action]

参见5.1章节。

results matching ""

    No results matching ""