【问题标题】:Spring Boot 2 - availableProcessors() returning 1 alwaysSpring Boot 2 - availableProcessors() 总是返回 1
【发布时间】: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


【解决方案1】:

问题未连接到 Hibernate、Spring 或任何其他容器。我们有 jni4net Bridge 在启动期间注册 DLL 文件(第 3 方库)。当 DLL 中的第一个服务类被实例化时,我们从 8 个核心减少到 1 个核心......显然与 dll 或桥有关。由于这是完全不同的问题,我认为这篇文章就足够了。

【讨论】:

    猜你喜欢
    • 2019-11-22
    • 1970-01-01
    • 2018-07-15
    • 2019-07-12
    • 1970-01-01
    • 2023-03-19
    • 2016-11-21
    • 2019-10-10
    • 2014-04-13
    相关资源
    最近更新 更多