老一代堆内存逐渐增加

时间:2017-02-14 13:11:58

标签: apache-spark garbage-collection spark-streaming

我在火花流中遇到了一个非常奇怪的问题。我正在使用spark 2.0.2,节点数3,执行器数量3 {1接收器和2个处理器},每个执行器2 GB内存,每个执行器1个核心。批处理间隔为10秒。我的批量大约是。 1000条记录(约150 KB)。

我的批次的处理时间从最初的2秒逐渐增加到几分钟,但是在前40-50小时它运行得非常好。之后,调度延迟和处理时间开始拍摄。

我曾试过看一下GC,并且驱动程序的老一代堆内存容量不断增加。这可能是原因吗?我使用jstat监视堆内存。在6小时内,容量从1161216字节增加到1397760字节。

运行驱动程序的机器有8个物理内核,经过40-50小时的流式传输后,所有8个内核的机器CPU使用率均为100%,老一代堆使用率已满且 FullGC 非常频繁。

我还看到一个jira issue表示火花流中存在内存泄漏,但它也说它在火花1.5之后被解决了。这有关系吗?

修改

我还在应用程序启动后大约50小时进行了堆转储。

Heap Dump Screenshot 为什么有这么多scala.collection.immutable.$colon$colon的实例?

1 个答案:

答案 0 :(得分:2)

问题已修复now。请看看这个并升级你的火花。