国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

香港云服务器
服務器之家 - 編程語言 - Java教程 - 基于Elasticsearch5.4的常見問題總結

基于Elasticsearch5.4的常見問題總結

2021-03-15 14:24我心自在 Java教程

下面小編就為大家分享一篇基于Elasticsearch5.4的常見問題總結,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

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

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

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

首先,我們在服務啟動的時候,在啟動類中初始化靜態(tài)ES Client:

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

然后在用到的時候直接調用:

?
1
Client client=Main.client;

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

ES代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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;
}

問題2:內存溢出:java.lang.OutOfMemory:unable to create new native thread

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

?
1
2
3
4
thread_pool.generic.core=默認值---4
thread_pool.generic.max=默認值--
min(512,max(4*processor數(shù),128))
processor數(shù)=CPU的processor數(shù)

我們的CPU是10核40線程

從計算結果來看,如果使用默認值的話,ES可以創(chuàng)建的線程數(shù)是一個很大的數(shù)值,這遠遠超出了系統(tǒng)本身的容納數(shù),主要是調整setting的數(shù)值,經(jīng)過調整,我們將ES的默認值改變如下:

?
1
2
3
4
5
6
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)過測試,ES創(chuàng)建了很少的線程數(shù),并且滿足我們的開發(fā)需求,再也沒有出現(xiàn)過內存溢出的問題了。

以上這篇基于Elasticsearch5.4的常見問題總結就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/10158wsj/p/8207241.html

延伸 · 閱讀

精彩推薦
1059
主站蜘蛛池模板: 激情总合网 | 一区二区亚洲 | 成人在线激情 | 一级a性色生活片久久毛片 国产精品久久久久久久久久免费看 | 久久香蕉国产视频 | 四虎av成人 | 久久久久久久久国产 | 久久亚洲欧美日韩精品专区 | 中文字幕一区二区三区不卡 | 国产麻豆乱码精品一区二区三区 | 久久久久久久 | 国产a级毛片 | 欧美一区日韩一区 | 91人人 | 一区日韩 | 日本在线不卡视频 | 亚洲欧美在线视频 | 久久精品中文视频 | 999精品视频一区二区三区 | 日韩字幕在线 | 久久精品99 | 日韩中文一区二区 | 免费一级毛片 | 成人午夜 | 狠狠干美女 | 中文字幕视频一区 | 亚洲国产视频一区 | 人一级毛片 | 日韩中文字幕一区二区三区 | 久久国产精品免费一区二区三区 | 久草毛片| 欧美综合一区 | 亚洲久草 | 国产欧美日韩在线观看 | 成人精品一区二区三区视频播放 | 日韩高清不卡一区二区三区 | 自拍偷拍五月天 | 免费精品| 国产精品成人av | 亚洲视频 欧美视频 | 狠狠色噜噜狠狠狠狠 |