Ubuntu环境Kafka创建主题时出现JVM退出代码1错误求助
Kafka创建主题报错ERROR Exiting JVM with code 1 (org.apache.zookeeper.util.ServiceUtils) - Ubuntu vs RHEL/CentOS环境差异排查
问题描述
在Ubuntu系统部署的Kafka服务器上执行主题创建命令时,触发以下错误:
ERROR Exiting JVM with code 1 (org.apache.zookeeper.util.ServiceUtils)
同一套Kafka程序在另一台使用YUM安装OpenJDK的Linux服务器(如CentOS/RHEL)上运行完全正常,无此报错。
环境差异
- Ubuntu:通过
sudo apt-get install openjdk-8-jre安装JRE,已配置环境变量 - 正常Linux服务器:通过
sudo yum install java-1.8.0-openjdk安装完整JDK
使用的主题创建命令
bin/kafka-topics.sh --create --topic zootest --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1
排查思路与解决建议
1. 补全JDK组件
Ubuntu的openjdk-8-jre仅包含运行时环境,而YUM安装的java-1.8.0-openjdk默认包含JDK开发组件。Kafka部分脚本依赖JDK工具类,尝试安装完整JDK:
sudo apt-get install openjdk-8-jdk
安装后修改JAVA_HOME指向JDK目录(如/usr/lib/jvm/java-8-openjdk-amd64),重启Kafka服务重试。
2. 验证ZooKeeper连接与权限
- 检查
config/server.properties中的zookeeper.connect参数是否与正常服务器一致,确认Ubuntu上ZooKeeper服务正常运行、端口可访问。 - 确保Kafka运行用户对ZooKeeper数据目录、Kafka日志目录有读写权限,避免用
sudo执行主题创建命令(权限过高可能导致目录访问异常)。
3. 对齐JVM环境变量
- 对比两台服务器的
JAVA_HOME、PATH配置:执行echo $JAVA_HOME和java -version确认版本一致,Ubuntu需确保JAVA_HOME指向完整JDK路径而非JRE子目录。 - 检查
bin/kafka-server-start.sh中的JVM参数,重点对比内存分配(-Xmx/-Xms)、安全策略配置,Ubuntu可能因默认JVM参数限制导致启动失败。
4. 获取详细报错信息
- 查看Kafka日志(默认
logs/server.log)和ZooKeeper日志,定位具体错误堆栈(如连接失败、依赖缺失)。 - 执行命令时添加
--verbose参数输出调试信息:
bin/kafka-topics.sh --create --topic zootest --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --verbose
5. 检查系统依赖库
Ubuntu与RHEL/CentOS系统依赖库存在差异,检查是否缺少Kafka/ZooKeeper依赖的系统库(如libssl):
ldd /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libnio.so
若缺失依赖,安装对应库(如sudo apt-get install libssl-dev)后重试。
内容的提问来源于stack exchange,提问作者Naren
相关产品推荐
相关产品推荐

