中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

基于Elasticsearch5.4的常見(jiàn)問(wèn)題總結(jié)

最近項(xiàng)目中用到了Elasticsearch6.4(ES)是比較新的一個(gè)版本,使用的過(guò)程中出現(xiàn)了很多的問(wèn)題,很是頭疼,但是問(wèn)題最終還是解決掉了。

晉江ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

問(wèn)題一:ESClient獲取慢,并且不能獲取Client:failed to create a child event loop

由于業(yè)務(wù)的需要沒(méi)上傳一批文件都要加一次ES索引,每加一次索引都要獲取連接然后操作,尤其是大批量的時(shí)候,獲取的次數(shù)顯然非常多,而且出現(xiàn)這個(gè)問(wèn)題的主要原因在于我們?cè)谘h(huán)頻繁的操作ES,比如一批文件100個(gè),我們就要獲取100次,為了降低ES Client獲取的時(shí)間,最終采取了一個(gè)方案,那就是在服務(wù)啟動(dòng)的時(shí)候初始化連接,一次性獲取,然后在后邊直接調(diào)用,整個(gè)批次文件上傳完成后,最后添加ES索引,而不是一個(gè)文件一個(gè)文件的去添加了。這種方式顯然不需要每個(gè)批次都獲取連接,大大提升了執(zhí)行效率。

首先,我們?cè)诜?wù)啟動(dòng)的時(shí)候,在啟動(dòng)類中初始化靜態(tài)ES Client:

private static ElasticSearchUtil ElasticSearchUtil=new ElasticSearchUtil();
public static TransportClient client=ElasticSearchUtil.getClient();

然后在用到的時(shí)候直接調(diào)用:

Client client=Main.client;

這樣可以大大減少ES Client的連接次數(shù),從而提升效率。

ES代碼如下:

public TransportClient getClient() {
String[] ipArr = configUtil.getValue("ESIP").split(",");
Settings settings = Settings.builder().put("thread_pool.generic.core",5)
    .put("thread_pool.generic.max", 10)
    .put("processors", 5)
    .put(Constants.ESCLUSTERNAME,configUtil.getValue("clusterName")).build();

TransportClient client = new PreBuiltTransportClient(settings);
for (String ip : ipArr) {
TransportAddress address = new InetSocketTransportAddress
  (InetAddresses.forString(ip),9300);
client.addTransportAddresses(address);
}
  return client;
}

問(wèn)題2:內(nèi)存溢出:java.lang.OutOfMemory:unable to create new native thread

在項(xiàng)目開(kāi)發(fā)過(guò)程中,發(fā)生內(nèi)存溢出是很讓人頭疼的一件事,在使用ES的過(guò)程中,就遇到了,而且很頻繁,尤其是在大批量壓力測(cè)試的時(shí)候根本進(jìn)行不下去,從jvm內(nèi)存調(diào)優(yōu)方面想了很多辦法,沒(méi)有什么效果,問(wèn)題依然得不到解決,最后在看源碼的時(shí)候,發(fā)現(xiàn)了一個(gè)原因,和報(bào)錯(cuò)異常結(jié)合來(lái)看,這是由與ES在使用過(guò)程中,自動(dòng)創(chuàng)建了大量的線程,超出了系統(tǒng)的容納量,所以導(dǎo)致了內(nèi)存溢出,研究源碼的時(shí)候發(fā)現(xiàn):ES創(chuàng)建的線程數(shù)是可以通過(guò)設(shè)置來(lái)控制的。下面是默認(rèn)的ES創(chuàng)建線程數(shù):

thread_pool.generic.core=默認(rèn)值---4
thread_pool.generic.max=默認(rèn)值--
min(512,max(4*processor數(shù),128))
processor數(shù)=CPU的processor數(shù)

我們的CPU是10核40線程

從計(jì)算結(jié)果來(lái)看,如果使用默認(rèn)值的話,ES可以創(chuàng)建的線程數(shù)是一個(gè)很大的數(shù)值,這遠(yuǎn)遠(yuǎn)超出了系統(tǒng)本身的容納數(shù),主要是調(diào)整setting的數(shù)值,經(jīng)過(guò)調(diào)整,我們將ES的默認(rèn)值改變?nèi)缦拢?/p>

Settings settings = Settings.builder().put("thread_pool.generic.core",5)
.put("thread_pool.generic.max", 10)
.put("processors", 5)  .put(Constants.ESCLUSTERNAME,configUtil.getValue("clusterName")).build();
這是之前的
Settings settings = Settings.builder().put("thread_pool.generic.core",5)
.put(Constants.ESCLUSTERNAME,configUtil.getValue("clusterName")).build();

經(jīng)過(guò)測(cè)試,ES創(chuàng)建了很少的線程數(shù),并且滿足我們的開(kāi)發(fā)需求,再也沒(méi)有出現(xiàn)過(guò)內(nèi)存溢出的問(wèn)題了。

以上這篇基于Elasticsearch6.4的常見(jiàn)問(wèn)題總結(jié)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持創(chuàng)新互聯(lián)。

本文標(biāo)題:基于Elasticsearch5.4的常見(jiàn)問(wèn)題總結(jié)
分享路徑:http://www.rwnh.cn/article40/psjoho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)標(biāo)簽優(yōu)化、網(wǎng)站收錄網(wǎng)站設(shè)計(jì)、全網(wǎng)營(yíng)銷推廣、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
镇巴县| 广灵县| 哈尔滨市| 南乐县| 邛崃市| 池州市| 绥宁县| 蒲江县| 永城市| 东至县| 馆陶县| 南川市| 格尔木市| 涪陵区| 克山县| 江阴市| 淅川县| 大英县| 神木县| 阳江市| 封丘县| 博白县| 栾川县| 伽师县| 天气| 永安市| 道真| 鄂温| 建湖县| 沁水县| 高清| 青阳县| 建始县| 公主岭市| 盐源县| 海宁市| 湛江市| 东安县| 彩票| 若尔盖县| 莲花县|