You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从RedHat 7迁移至RedHat 8时Kafka崩溃问题求助

RHEL7迁移至RHEL8后librdkafka线程创建失败问题排查方案

问题现象

程序启动时触发以下错误并出现core dump:

configuring ...
starting ...
endpointUrl = opc.tcp://LBA:9681/POO.S2K/OPCUA/DataAccess
== Info:   Trying 10.119.0.247:8090...

== Info: TCP_NODELAY set

%2|1662467686.094|THREAD|rdkafka#consumer-1| [thrd:app]: Unable to create broker thread: Operation now in progress (115)
%3|1662467686.094|ERROR|rdkafka#consumer-1| [thrd:app]: Unable to create broker thread: Operation now in progress (115)
nbdtmdp: /home/deploy/nbdtmdp/build/src/librdkafka/librdkafka-prefix/src/librdkafka/src/rdkafka_broker.c:4773: rd_kafka_broker_add_logical: Assertion `rkb && *"failed to create broker thread"' failed.
./nbdtmdp_start.sh: line 7: 110235 Aborted                 (core dumped) ./nbdtmdp ../config/nbdtmdpCfg.txt

排查与解决步骤

  • 适配librdkafka版本
    RHEL8的系统库(glibc、pthread等)与RHEL7存在兼容性差异,旧版librdkafka可能未适配。在RHEL8环境重新编译最新稳定版librdkafka,编译时指定系统原生头文件与库路径,避免依赖旧版兼容组件。

  • 调整线程资源限制
    检查当前用户线程数限制:ulimit -u,若数值过低,修改/etc/security/limits.conf添加:

    <你的用户名> soft nproc 65535
    <你的用户名> hard nproc 65535
    

    重启会话后生效,再尝试启动程序。

  • 排查pthread行为差异
    RHEL8中pthread_create的错误码处理逻辑有调整,Operation now in progress (115)对应EINPROGRESS,可能是librdkafka未正确处理异步线程创建场景。查看rd_kafka_broker_add_logical函数的线程创建逻辑,适配RHEL8的pthread行为,或改用线程池模式替代动态线程创建。

  • 检查SELinux策略
    RHEL8默认SELinux严格模式可能阻止程序创建线程。临时关闭SELinux测试:setenforce 0,若程序恢复正常,需添加自定义SELinux规则允许该程序的线程创建操作,或调整SELinux为宽容模式。

  • 确保编译环境一致
    不要直接复用RHEL7的编译产物,在RHEL8上重新编译整个项目,使用系统原生gcc版本,避免因ABI不兼容导致的底层调用失败。

内容的提问来源于stack exchange,提问作者BAKYAC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 22:55:18