Apache NiFi 1.19.0 Docker容器启动失败求助
解决Apache NiFi 1.19.0 Docker容器启动失败问题
问题场景
执行Docker Hub官方命令启动NiFi 1.19.0容器:
docker run --name nifi \ -p 8443:8443 \ -d \ apache/nifi:1.19.0
容器启动失败,核心报错为Java无法创建GC线程,提示系统资源不足。该版本将Java从8升级到11,旧版本无此问题。
错误日志关键片段
replacing target file /opt/nifi/nifi-current/conf/nifi.properties ... NiFi running with PID 40. tail: cannot open '/opt/nifi/nifi-current/logs/nifi-app.log' for reading: No such file or directory Java home: /opt/java/openjdk NiFi home: /opt/nifi/nifi-current Bootstrap Config File: /opt/nifi/nifi-current/conf/bootstrap.conf [0.003s][warning][os,thread] Failed to start thread "GC Thread#0" - pthread_create failed (EPERM) for attributes: stacksize: 1024k, guardsize: 4k, detached. # # There is insufficient memory for the Java Runtime Environment to continue. # Cannot create worker GC thread. Out of system resources. # An error report file with more information is saved as: # /opt/nifi/nifi-current/hs_err_pid40.log
解决办法
1. 增加容器内存分配
启动时指定容器可用内存,避免系统资源不足:
docker run --name nifi \ -p 8443:8443 \ -d \ -m 2g \ apache/nifi:1.19.0
可根据主机资源调整内存值(如-m 4g)。
2. 调整NiFi Java堆内存配置
通过环境变量覆盖默认堆内存设置,适配Java 11的内存需求:
docker run --name nifi \ -p 8443:8443 \ -d \ -e NIFI_JVM_HEAP_INIT=1g \ -e NIFI_JVM_HEAP_MAX=1g \ apache/nifi:1.19.0
建议初始堆与最大堆值保持一致,减少内存波动。
3. 组合优化(推荐)
同时配置容器内存和Java堆内存,确保容器内存≥Java最大堆内存:
docker run --name nifi \ -p 8443:8443 \ -d \ -m 2g \ -e NIFI_JVM_HEAP_INIT=1g \ -e NIFI_JVM_HEAP_MAX=1g \ apache/nifi:1.19.0
额外提示
日志中NIFI_WEB_PROXY_HOST was not set的提示,若需外部访问NiFi UI,可添加环境变量:
-e NIFI_WEB_PROXY_HOST=你的主机IP:8443
内容的提问来源于stack exchange,提问作者Sajad Hamreh
相关产品推荐
相关产品推荐

