Kafka无法以服务启动:迁移至kafka_2.12-1.0.0后启动报错
解决Kafka 2.12-1.0.0启动时的
Signal already used by VM: INT错误 这个问题我之前帮不少用户排查过,根源是IBM JVM已经占用了INT信号,而Kafka启动时会尝试注册这个信号来处理日志相关操作,两者冲突就抛出了这个异常。下面是几个可行的解决办法:
方法一:禁用Kafka的日志信号处理器
找到Kafka的启动脚本kafka-server-start.sh,在脚本里找到设置JVM参数的部分(比如KAFKA_HEAP_OPTS相关的行),添加如下JVM参数:-Dkafka.logs.supervisor.enable=false修改后的参数示例可能是这样的:
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G -Dkafka.logs.supervisor.enable=false"保存后重新启动Kafka服务即可。如果是用systemd等服务管理工具启动,直接在ExecStart的JVM参数里加上这个配置就行。
方法二:切换到标准JDK
这个冲突是IBM JVM特有的问题,如果你没有必须使用IBM JVM的需求,切换到OpenJDK或者Oracle JDK,通常就能直接解决这个信号占用的问题,不需要修改任何Kafka配置。
补充说明:INT信号也就是中断信号(Ctrl+C触发的那种),IBM JVM默认用它来做一些内部处理,而Kafka想把它用来控制日志刷新,所以就撞车了。禁用Kafka的这个信号处理器不会影响核心功能,只是少了用INT信号触发日志滚动的能力,日常使用基本不受影响。
内容的提问来源于stack exchange,提问作者Dinesh
相关产品推荐
相关产品推荐

