我们使用OpenShift 3.6作为我们的Cloud PaaS,我正在测试连接到Couchbase Cluster的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引导程序在250毫微微POD上花费了大量时间,这违反了其默认的连接超时并且正在崩溃应用程序。
如果我增加超时,应用程序会启动但是在执行任何事务时它都会缓慢。我可以使用1 X 3 POD但是它涉及的成本增加了。但是我似乎对使用的内存没有任何问题。
Q1)启动期间JVM的CPU依赖性是什么(旋转新线程,处理内存,类加载等)。
Q2)我知道JVM在启动期间是资源密集型的,但是否正在使用的堆栈的最小建议POD大小,应用程序正常运行。
问题3)如果较高的POD大小是Java app / JVM的默认要求,那么它不能违背将其用作应该是轻量级的微服务的概念。
我已经调整了JVM参数,Xmx,Xms以及GC的不同组合,如G1GC,ParallelGc等(以查看它是否可能以不同的方式播放)但仍然经历相同的引导时间。唯一可能产生影响的是CPU大小。
Spring boot v2.1 OpenShift v3.6 Couchbase 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容量。
答案 0 :(得分:1)
您好,您可以在Openshift上设置一个请求和一个限制值。对于我的Spring Boot应用程序,我已经设置了允许的最大限制值,因为对于您的Spring Boot JVM,您拥有更多的CPU,并且启动速度更快。然后,对于我的应用程序正常流量,我已经设置了足够的请求。我已逐步说明如何在this post上调整应用大小。这应该可以回答您的问题。