【问题标题】:Why my jib container failed to start pthread_create failed (EPERM)为什么我的 jib 容器无法启动 pthread_create 失败(EPERM)
【发布时间】:2022-07-21 15:25:40
【问题描述】:

我有一个 Springboot 应用程序,打包在 docker 映像中,jib 版本为 3.2.0。

当我尝试在我的 linux 服务器上启动时,我立即遇到了错误。

[0.012s][warning][os,thread] Failed to start thread - 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:
# //hs_err_pid1.log

我不知道如何查看 /hs_err_pid1.log,因为服务器立即崩溃,我无法使用 exec 进入。

经过一些测试,我发现容器在特权模式下工作。但出于安全原因,我想避免使用该解决方案。

我尝试释放一些内存 (4g),但容器仍然崩溃。

我已经使用 docker run 和 docker-compose 运行了我的容器,结果相同

我也尝试在不同的服务器(容量相似)上运行它,并且图像工作正常。

有关信息,我使用的是 docker 版本 20.10.4 jib打包的镜像使用jdk17 temurin 17.0.3+7

【问题讨论】:

  • 您可以在交互模式 (docker run --entrypoint sh -it $IMAGE) 下使用覆盖的入口点/命令启动容器,使用 shell 而不是您的 java 进程,然后手动启动 java。如果 JVM 崩溃,容器将保持活动状态,您将能够检查崩溃日志。
  • 感谢您的回复,我已经尝试过了。结果,即使是 java -version 也失败并出现同样的错误
  • 我用经典的 java 镜像 openjdk17 和 java -version 尝试了同样的事情。所以我不认为我缺少内存

标签: spring-boot docker jib


【解决方案1】:

问题来自openjdk-temurin。

根据github issue,这已通过使用 docker 20.10.5 得到纠正。

我已经尝试升级我的 docker 版本,但我不再遇到问题了

【讨论】:

  • 可能你的意思是 docker 20.10.5
猜你喜欢
  • 2020-01-21
  • 1970-01-01
  • 2018-12-21
  • 1970-01-01
  • 1970-01-01
  • 2011-08-23
  • 1970-01-01
  • 2015-09-26
  • 2021-02-13
相关资源
最近更新 更多