我们在kubernetes上运行使用bootBuildImage gradle任务创建的spring引导容器。我们在k8s中为启动时的豆荚提供CPU限制和内存限制。我们使用:
我们注意到,所有基于弹簧引导的容器都是配置的(即线程的nb ),就像运行在32个CPU实例上一样。
Docker启动日志显示
将活动处理器计数设置为32 .JAVA_TOOL_OPTIONS:. -XX:ActiveProcessorCount=32
在带有see服务器的spring admin()中,线程池提供了线程池,就像应用程序运行在分配给容器的32个CPU上一样,即使容器被k8s限制在一个CPU上。分配给JVM的内存是正确的。
如何确保活动CPU计数反映k8s CPU限制?
提前感谢
发布于 2022-01-08 13:55:13
根据您所包含的输出,看起来您使用的是构建包(即./mvnw spring-boot:build-image、./gradlew bootBuildImage或pack build)。
在这种情况下,可以使用JAVA_TOOL_OPTIONS设置env变量-XX:ActiveProcessorCount=x,以覆盖默认计算。默认计算将提取处理器总数(如Go的runtime.NumCPU()函数所报告)。
旁注。您要求的似乎是合理的,所以我开了个问题看看我们是否能够让它检测有限的CPU计数。
https://stackoverflow.com/questions/70623349
复制相似问题