由于我使用rocksdb作为我的flink作业的状态后端,并且我正在配置这个状态后端的参数,我在flink的这一页中读到,我有两个选项可以保留我的计时器(rocksdb或heap),我已经读过解释,但仍然缺少这部分的含义:
但是,在rocksdb中维护计时器会有一定的成本,这就是为什么flink提供了在jvm堆上存储计时器的选项,即使rocksdb用于存储其他状态。当计时器数量较少时,基于堆的计时器可以具有更好的性能。”
他们在这里提到了什么样的成本(延迟)?
什么意味着更少的计时器数量(可以用这个数字来衡量,堆中允许的最大计时器数量是多少)?
1条答案
按热度按时间k2fxgqgv1#
可以以较少的延迟访问基于堆的计时器。我所听到的基准只提到了一个小的改进(5-10%的加速)。但是,将计时器保留在堆上会增加垃圾收集中涉及的对象的数量,因此这也会损害整体性能(例如,最坏情况下的延迟)。
我认为你必须做你自己的基准,以确保什么是最好的,在你的情况下,但我不会期望任何戏剧性的效果这样或那样。