Runtime.getRuntime().availableProcessors() 在容器优化操作系统上始终返回 1

Sha*_*aju 7 java elasticsearch kubernetes google-kubernetes-engine

我正在 GCP 上的 kubernetes 引擎上部署 Elasticsearch,但遇到了性能问题。Elasticsearch根据核心数量确定各种线程池的大小。尽管我创建了一个 32 核 VM,但线程池大小仅为 1。

我确实编写了一个测试程序来打印Runtime.getRuntime().availableProcessors(),它只是打印为 1 。

我想这与“容器优化操作系统”有关,这是使用 Kubernetes Engine 的虚拟机上允许的唯一操作系统。当我在 GCP 上创建 Debian VM 时,Runtime.getRuntime().availableProcessors()返回 8。不确定如何在 GCP kubernetes 引擎上使用 elasticsearch。欢迎任何想法或建议。

当我在没有 kubernetes 的 GCP 上创建 Debian 虚拟机时,返回Runtime.getRuntime().availableProcessors()8。

小智 7

你可以试试

-XX:ActiveProcessorCount=[主机CPU计数]

进而

Runtime.getRuntime().availableProcessors()

将返回

主机CPU计数