如何设置 Heap Size
的问题,其实和 Kafka
关系不大,它是一类非常通用的面试题目。一旦你应对不当,面试方向很有可能被引到 JVM
和 GC
上去,那样的话,你被问住的几率就会增大。因此,我建议你简单地介绍一下 Heap Size
的设置方法,并把重点放在 Kafka Broker
堆小设置的最佳实践上。
比如,你可以这样回复:
- 任何
Java
进程 JVM 堆大小的设置都需要仔细地进行考量和测试。 - 一个常见的做法是,以默认的
初始 JVM 堆大小
运行程序,当系统达到稳定状态后,手动触发一次Full GC
,然后通过JVM 工具
查看GC
后的存活对象大小。之后,将堆大小设置成存活对象总大小的1.5~2 倍
。
对于 Kafka 而言,这个方法也是适用的。 - 不过,业界有个最佳实践,那就是将
Broker
的Heap Size
固定为6GB
。经过很多公司的验证,这个大小是足够且良好的。