【问题标题】:Springboot docker container exits immediately with code 1Springboot docker 容器立即退出,代码为 1
【发布时间】:2020-09-22 16:25:35
【问题描述】:

我的 Dockerfile

FROM openjdk:8-jre-alpine
COPY ./service-0.0.1-SNAPSHOT-app.jar /app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-Xms1536m", "-Xmx1536m", "-XX:+UseConcMarkSweepGC", "-XX:CMSInitiatingOccupancyFraction=70", "-XX:+UseCMSInitiatingOccupancyOnly", "-verbose:gc", "-jar", "-Dspring.profiles.active=${ENV_NAME},${ENV_VERSION_NAME}", "/app.jar"]

我的容器运行命令

docker run -P -e ENV_NAME=dev -e ENV_VERSION_NAME=dev 7f25fb4baf24

Docker 日志输出

[GC (Allocation Failure)  419456K->48832K(1520448K), 0.0318446 secs]
[GC (Allocation Failure)  468288K->85028K(1520448K), 0.2128481 secs]
[GC (CMS Initial Mark)  94900K(1520448K), 0.0051537 secs]

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::       (v1.5.14.RELEASE)

附加信息:

  1. Docker run -ti 没有帮助
  2. 以上结果来自在 Jenkins Slave 上运行,但在本地计算机和我尝试从中迁移的另一个 Jenkins 实例上运行良好
  3. 其他 docker 容器在这个 Jenkins slave 上运行良好
  4. 我看到 GC (Allocation Failure) 即使在应用程序运行良好的本地运行时

【问题讨论】:

    标签: spring-boot docker jenkins exit


    【解决方案1】:

    这个 Jenkins 实例是否有足够的 RAM 剩余?

    从 GC 日志中可以看出,堆占用了 1520 MB,并使用 XmsXmx 设置进行了配置。

    XX:ReservedCodeCacheSize 默认为 24​​0 MB。

    Spring boot 嵌入式 tomcat 默认创建 200 个线程。这可以使用配置server.tomcat.threads.max=50 进行配置。每个线程的默认堆栈大小为 1 MB。所以所有线程都将占用 200 MB。如果需要,可以使用-Xss512k 配置堆栈大小。

    因此,您的应用程序至少会寻求1520+240+200=1960 MB 空闲内存。

    默认情况下,您的容器将对系统上的所有 RAM 具有可见性,并且会在进程内部运行需要时尝试自行增长。您可以通过配置XX:MaxRAM来限制Java进程可见的RAM。

    以下问题的答案也应该可以帮助您进一步了解这一点: Java using much more memory than heap size (or size correctly Docker memory limit)

    【讨论】:

      猜你喜欢
      • 2015-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-24
      • 2018-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多