spring boot es錯誤:availableProcessors is already set to [4], rejecting [4]

原文鏈接:https://blog.csdn.net/longzhanpeng/article/details/81287645


Springboot整合Elasticsearch報錯
今天使用SpringBoot整合Elasticsearch時候,相關的配置完成後,啓動項目就報錯了。

nested exception is java.lang.IllegalStateException: availableProcessors is already set to [4], rejecting [4]
我網上查詢了一下,有人是是因爲整合了Redis的原因。但是我把Redis相關的配置去掉後,問題還是沒有解決,最後有人說是因爲netty衝突的問題。
也有人給出瞭解決方式就是在項目初始化錢設置一下一個屬性。在初始化之前加上System.setProperty(“es.set.netty.runtime.available.processors”, “false”);

@Configuration
public class ElasticSearchConfig {
    @PostConstruct
    void init() {
        System.setProperty("es.set.netty.runtime.available.processors", "false");
    }
}



我按照這種方法還是沒有解決我這邊項目的問題。
最後我直接把System.setProperty(“es.set.netty.runtime.available.processors”, “false”);
發現這樣可以解決我這邊的問題。

@SpringBootApplication
public class EurekaBussnissServiceUserApplication {

    public static void main(String[] args) {
//        System.out.println("===========================================");
        /**
         * Springboot整合Elasticsearch 在項目啓動前設置一下的屬性,防止報錯
         * 解決netty衝突後初始化client時還會拋出異常
         * java.lang.IllegalStateException: availableProcessors is already set to [4], rejecting [4]
         */
        System.setProperty("es.set.netty.runtime.available.processors", "false");
        SpringApplication.run(EurekaBussnissServiceUserApplication.class, args);
    }
}

原因分析
SpringBoot 2.X 的 spring-boot-starter-data-redis 默認是以 lettuce 作爲連接池的, 而在 lettuce , elasticsearch transport 中都會依賴netty, 二者的netty 版本不一致,不能夠兼容

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章