Druid historical/broker 节点启动失败

部署Druid服务时遇到了启动失败的异常。相关的节点是historical和broker。异常信息如下:

异常信息中比较关键的部分是下面这一句:

这一句指明了启动失败的原因:分配的直接内存不足。需要的直接内存大小是“5,368,709,120”,实际提供的大小是“4,294,967,296”。

并且指明了解决方案:在虚拟机参数中添加“-XX:MaxDirectMemorySize”这样一个指标。

以为这样就够了!?druid的开发人员做的实际上还要多一点,他(们)在这段异常信息中还解释了为什么需要这么多直接内存,看看异常信息中提供的计算公式:

为了看着方便,我手动做了下换行。

公式中使用到的配置参数如druid.processing.buffer.sizeBytes和druid.processing.numMergeBuffers等可以在historical和middleManager的runtime.properties文件中找到。方括号里的值是用户自己设置的值。

至于怎么修改这个问题,网上找到的资料多是建议在middleManager的runtime.properties的druid.indexer.runner.javaOpts配置项中进行配置,我试了一下,不中。

忘了说了,使用的druid版本是0.12.1。

成功了的做法是分别在conf/druid/historical/jvm.config和conf/druid/broker/jvm.config中添加“-XX:MaxDirectMemorySize”参数。参数值可以参考异常信息的提示酌情设置。这里是我的historical/jvm.config的配置:

设置完成后,重启,可以成功,说明配置生效。就这样。

######