升级Camunda Zeebe 8.3.1后Docker启动失败求助
问题:升级Camunda Zeebe至8.3.1后启动失败(GC线程创建失败)
将CAMUNDA_PLATFORM_VERSION从8.3.0-alpha3升级至8.3.1后,使用原有环境及docker-compose方式启动Zeebe时出现启动错误,执行命令为docker-compose up zeebe。
错误日志
zeebe | Picked up JAVA_TOOL_OPTIONS: -Xms512m -Xmx512m zeebe | [0.002s][warning][os,thread] Failed to start thread "GC Thread#0" - pthread_create failed (EPERM) for attributes: stacksize: 1024k, guardsize: 4k, detached. zeebe | # zeebe | # There is insufficient memory for the Java Runtime Environment to continue. zeebe | # Cannot create worker GC thread. Out of system resources. zeebe | # An error report file with more information is saved as: zeebe | # /usr/local/zeebe/hs_err_pid8.log zeebe exited with code 1
当前docker-compose.yml中Zeebe配置
zeebe: # https://docs.camunda.io/docs/self-managed/platform-deployment/docker/#zeebe image: camunda/zeebe:${CAMUNDA_PLATFORM_VERSION} container_name: zeebe ports: - "26500:26500" - "9600:9600" environment: -ZEEBE_BROKER_EXPORTERS_ELASTICSEARCH_CLASSNAME=io.camunda.zeebe.exporter.ElasticsearchExporter - ZEEBE_BROKER_EXPORTERS_ELASTICSEARCH_ARGS_URL=http://elasticsearch:9200 - ZEEBE_BROKER_EXPORTERS_ELASTICSEARCH_ARGS_BULK_SIZE=1 - ZEEBE_BROKER_DATA_DISKUSAGECOMMANDWATERMARK=0.998 - ZEEBE_BROKER_DATA_DISKUSAGEREPLICATIONWATERMARK=0.999 - "JAVA_TOOL_OPTIONS=-Xms512m -Xmx512m" restart: always healthcheck: test: [ "CMD-SHELL", "curl -f http://localhost:9600/ready" ] interval: 30s timeout: 5s retries: 5 start_period: 30s
解决方案
1. 调整容器内存限制
Docker默认可能给容器分配的内存配额不足,即使JVM设置了内存参数,容器整体内存受限会导致无法创建线程。在docker-compose.yml的Zeebe服务中添加内存限制配置:
zeebe: # 保留原有所有配置 deploy: resources: limits: memory: 1.5G
(如果是旧版Docker Compose,可改用mem_limit: 1536m)
2. 提升宿主机线程数限制
宿主机的用户进程线程数上限过低会导致JVM无法创建GC线程:
- 临时调整:执行
ulimit -u 65535(当前会话有效) - 永久调整:编辑
/etc/security/limits.conf文件,添加以下内容后重启系统或重新登录:* soft nproc 65535 * hard nproc 65535
3. 减小JVM线程栈大小
错误日志显示线程栈默认是1024k,尝试减小栈大小以节省资源,修改JAVA_TOOL_OPTIONS:
environment: # 其他环境变量不变 - "JAVA_TOOL_OPTIONS=-Xms512m -Xmx512m -Xss256k"
4. 排查权限问题(测试用)
新版本镜像可能调整了运行用户权限,临时添加user: root到Zeebe服务配置,验证是否是权限导致的线程创建失败(生产环境不建议长期使用root用户):
zeebe: # 其他配置不变 user: root
内容的提问来源于stack exchange,提问作者Akjun
相关产品推荐
相关产品推荐

