【问题标题】:Recommended Container/POD CPU size for a SpringBoot and Vert.X application on OpenShiftOpenShift 上 SpringBoot 和 Vert.X 应用程序的推荐 Container/POD CPU 大小
【发布时间】:2018-11-15 10:27:41
【问题描述】:

我们使用 OpenShift 3.6 作为我们的 Cloud PaaS,我正在测试连接到 Couchbase 集群的 Spring Boot 和 Vert.X 应用程序。可用的默认 POD 大小为 250millicore X 1 GB、400millicore X 1.5 GB 和 1core X 3 GB。

当我尝试部署应用程序(Spring Boot / Vert.X)时,我观察到 250millicore POD 的引导时间 > 2-3 分钟,而 1Core POD 的引导时间为 45 秒。因此,Couchbase 引导程序在 250millicore POD 上花费了大量时间,这违反了其默认的连接超时并导致应用程序崩溃。

如果我增加超时时间,应用程序会启动,但是在执行任何事务时它会很缓慢。我可以使用 1 X 3 POD,但会增加成本。但是,我似乎对使用的内存没有任何问题。

Q1) JVM 在启动期间对 CPU 的依赖是什么(旋转新线程、在内存中处理、类加载等)。

Q2) 我知道 JVM 在启动期间是资源密集型的,但是对于正在使用的堆栈是否有推荐的最小 POD 大小,应用程序在该堆栈上运行良好。

Q3) 如果更大的 POD 大小是 Java 应用程序/JVM 的默认要求,那么它是否违背了能够将其用作应该是轻量级的微服务的概念。

我已经调整了 JVM 参数、Xmx、Xms 和不同的 GC 组合,如 G1GC、ParallelGc 等(看看它是否会以不同的方式发挥作用),但仍然经历相同的引导时间。唯一似乎有影响的是 CPU 大小。

Spring Boot v2.1 OpenShift v3.6 沙发底座 v5.1 Java v1.8.161 CB SDK 2.5.7

Attached is a VisualVM snapshot of the app on my local machine (i5 - 4 core) 在应用生命周期的初始阶段,这似乎占用了大约 30% 的 CPU 容量。

【问题讨论】:

  • 只衡量有效的方法,然后相应地应用设置。

标签: java docker jvm kubernetes openshift


【解决方案1】:

您好,在 Openshift 上,您可以设置请求和限制值。对于我的 Spring Boot 应用程序,我设置了最大允许的限制值,因为对于您的 Spring Boot JVM,您拥有更多 CPU 并且启动速度更快。然后,我将请求设置为足以满足我的应用程序标称流量。我已经一步一步地写了我如何在this post 上调整我的应用程序的大小。这应该可以回答您的问题。

【讨论】:

    猜你喜欢
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 2019-10-05
    • 2019-07-19
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    相关资源
    最近更新 更多