我们的开发人员正在开发 springboot java 应用程序,并将其部署到 AKS 集群。我们使用 Helm 和 Azure 管道将这些应用程序动态部署到 AKS 集群,并且 Pod 资源规范的值在 ADO 管道的变量组中定义。
但是我们在估计每个应用程序所需的资源规范时面临一些困难,因为每个应用程序都有不同的 JVM 设置和启动行为。由于我们没有适当的机制来定义资源请求和限制(分别为 Cpu 和 Mem),因此我们的混乱会因 ADO 管道中这些值的错误使用而过度使用。
因此,我们试图引入一些自动化机制,开发人员可以通过传递 JVM 参数或 springboot 应用程序需要考虑的一些特定事物来估计所需的内存和 cpu 请求和限制值,然后这些估计值可以在相应的变量组中使用。下面是 jvmSetings 中使用的一些组件。
那么这可以通过自动化的方式实现吗?
以下是开发者使用的一些jvmSettings参数
-Xmx650m
-XX:MaxGCPauseMillis=100
-XX:MetaspaceSize=150m
-XX:MaxMetaspaceSize=150m
-XX:MaxMetaspaceFreeRatio=100
-XX:CompressedClassSpaceSize=25m
-XX:InitialCodeCacheSize=100m
-XX:ReservedCodeCacheSize=100m
-XX:MaxDirectMemorySize=100m
-XX:+DisableExplicitGC