我们在一个项目中使用SpringKafka客户机。最近我们注意到,如果一个kafka消费者由于outofmemoryerror而死亡,那么服务将继续正常运行,并且不会创建新的消费者。解决此问题的唯一方法是监视日志中的oom并手动重新启动服务。我们正在寻找一种使消费者娱乐自动化的方法,例如:
强制spring(以某种方式)检测死亡的消费者,并在运行时创建新的消费者。
如果使用者线程中出现oom,则终止整个服务,以便aws auto scaling group可以创建服务的新示例。
如有任何建议或意见,我们将不胜感激。谢谢您!
1条答案
按热度按时间bkhjykvo1#
我找到了与上述方案2有关的解决办法。从java版本“1.8.0_”开始,有几个jvm选项允许在oome情况下终止整个jvm:
已添加,请参阅发行说明。
exitonoutofmemoryerror启用此选项时,jvm将在第一次出现内存不足错误时退出。如果您喜欢重新启动jvm示例而不是处理内存不足错误,那么可以使用它。
crashonoutofmemoryerror如果启用此选项,则当发生内存不足错误时,jvm崩溃并生成文本和二进制崩溃文件。