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