本文介紹了在容器優(yōu)化的操作系統(tǒng)上,Runtime.getRuntime().availableProcessors()始終返回1的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我在GCP上的Kubernetes引擎上部署ElasticSearch,遇到性能問題。ElasticSearch根據(jù)內(nèi)核數(shù)量確定各種線程池的大小。即使我創(chuàng)建了32核虛擬機(jī),線程池大小也只有1。
我確實(shí)編寫了一個(gè)測試程序來打印Runtime.getRuntime().availableProcessors()
,它只是打印為1。
我猜與容器優(yōu)化操作系統(tǒng)有關(guān),容器優(yōu)化操作系統(tǒng)是使用Kubernetes引擎的虛擬機(jī)上唯一允許的操作系統(tǒng)。當(dāng)我在GCP上創(chuàng)建Debian VM時(shí),Runtime.getRuntime().availableProcessors()
返回8。不確定ElasticSearch在GCP Kubernetes引擎上是如何使用的。歡迎您提出任何想法或建議。
當(dāng)我在沒有Kubernetes的GCP上創(chuàng)建Debian VM時(shí),Runtime.getRuntime().availableProcessors()
返回8。
推薦答案
您可以嘗試
-XX:ActiveProcessorCount=[host_cpu_count]
然后
Runtime.getRuntime().availableProcessors()
將返回
HOST_CPU_COUNT
這篇關(guān)于在容器優(yōu)化的操作系統(tǒng)上,Runtime.getRuntime().availableProcessors()始終返回1的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,