【发布时间】:2018-10-03 03:26:03
【问题描述】:
Java 8,Spring Boot 2。 我正在使用多线程和 CompletableFuture 测试性能,当时我意识到只有 1 个核心处于阻塞状态,其余核心基本上没有做太多工作。 high load on only 1 core
其他内核上的一些负载可能是由机器上运行的其他进程引起的。 我试图找出问题所在,然后意识到
Runtime.getRuntime().availableProcessors()
在运行时总是返回 1。我是否启动了多个线程都没有关系,数字始终是 1(应该是 8)。 然后我创建了简单的单元测试类并运行 availableProcessors() 代码并得到 8。显然,连接到 Spring 上下文的某些东西使运行时看不到所有可用的内核。 帮忙?
【问题讨论】:
-
你确定你没有在限制进程可用 CPU 数量的 VM 或容器中运行它吗?
-
VM 限制 - 肯定没有。容器 - 不确定,我猜 Spring 容器正在做这个限制,不知道为什么。这是主要问题
-
tomcat 也没有与此主题相关的任何设置,或者我遗漏了什么?
标签: spring-boot cpu-cores processors