成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ElasticSearch使用問題及解決方案匯總

云計算
Elasticsearch是一個開源的分布式實時搜索與分析引擎,支持云服務。它是基于Apache Lucene搜索引擎的類庫創(chuàng)建的,提供了全文搜索能力、多語言支持、專門的查詢語言、支持地理位置服務、基于上下文的搜索建議、自動完成以及搜索片段(snippet)的能力,本文總結了使用 elasticsearch所遇到的各類問題以及相關的解決方案。

[[133936]]

Elasticsearch是一個開源的分布式實時搜索與分析引擎,支持云服務。它是基于Apache Lucene搜索引擎的類庫創(chuàng)建的,提供了全文搜索能力、多語言支持、專門的查詢語言、支持地理位置服務、基于上下文的搜索建議、自動完成以及搜索片段(snippet)的能力。Elasticsearch支持RESTful的API,可以使用JSON通過HTTP調用它的各種功能,包括搜索、分析與監(jiān)控。此外,它還為Java、PHP、Perl、Python以及Ruby等各種語言提供了原生的客戶端類庫。下面是總結了一下使用 elasticsearch所遇到的各類問題以及相關的解決方案。

1、out of memory錯誤問題

因為默認情況下es對字段數(shù)據(jù)緩存(Field Data Cache)大小是無限制的,查詢時會把字段值放到內存,特別是facet查詢,對內存要求非常高,它會把結果都放在內存,然后進行排序等操作,一直使用內存,直到內存用完,當內存不夠用時就有可能出現(xiàn)out of memory錯誤。

解決方法:

(1)設置es的緩存類型為Soft Reference,它的主要特點是據(jù)有較強的引用功能。只有當內存不夠的時候,才進行回收這類內存,因此在內存足夠的時候,它們通常不被回收。另外,這些引 用對象還能保證在Java拋出OutOfMemory 異常之前,被設置為null。它可以用于實現(xiàn)一些常用圖片的緩存,實現(xiàn)Cache的功能,保證最大限度的使用內存而不引起OutOfMemory。在es 的配置文件加上index.cache.field.type: soft即可。

(2)設置es最大緩存數(shù)據(jù)條數(shù)和緩存失效時間,通過設置index.cache.field.max_size: 50000來把緩存field的最大值設置為50000,設置index.cache.field.expire: 10m把過期時間設置成10分鐘。

2、拋出異常,錯誤如下:

  1. 1org.elasticsearch.transport.RemoteTransportException: Failed to deserialize exception response from stream 

原因:es節(jié)點之間的JDK版本不一樣

解決方式:統(tǒng)一JDK版本和環(huán)境

3、拋出異常,錯誤如下:

  1. org.elasticsearch.client.transport.NoNodeAvailableException: No node available 

(1)端口錯誤

client = new TransportClient().addTransportAddress(new InetSocketTransportAddress(ipAddress, 9300));

端口9300寫成9200的報錯No node available 或者查看連接的是不是本地計算機,如果是遠程的話查看一下IP地址是否正確。

(2)jar包報錯誤的話可能是引用包不匹配,開啟的服務是什么版本最好對應相應的jar包。

(3)修改了集群名稱,設置了集群名字導致出現(xiàn)問題,設置操作如下:

  1. Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name""yoodb").build();  
  2.             client = new TransportClient(settings).addTransportAddress(new InetSocketTransportAddress(ipAddress, 9300)); 

 (4)集群超過5s沒有響應,解決方式如下:

1)設置client.transport.ping_timeout超時時間,增大一些

2)代碼內嵌入,如下:

  1. while (true) {  
  2. try {  
  3.     bulk.execute().actionGet(getRetryTimeout());  
  4.     break;  
  5. catch (NoNodeAvailableException cont) {  
  6.     Thread.sleep(5000);  
  7.     continue;  
  8. }  

4、由gc引起節(jié)點脫離集群

因為gc時會使jvm停止工作,如果某個節(jié)點gc時間過長,master ping3次(zen discovery默認ping失敗重試3次)不通后就會把該節(jié)點剔除出集群,從而導致索引進行重新分配。解決方法如下:

(1)優(yōu)化gc,減少gc時間。

(2)調大zen discovery的重試次數(shù)(es參數(shù):ping_retries)和超時時間(es參數(shù):ping_timeout)。后來發(fā)現(xiàn)根本原因是有個節(jié)點的系統(tǒng)所在硬盤滿了。導致系統(tǒng)性能下降。

#p#

5、無法創(chuàng)建本地線程問題

es恢復時報錯,如下:

  1. RecoverFilesRecoveryException[[index][3] Failed to transfer [215] files with total size of [9.4gb]]; nested: OutOfMemoryError[unable to create new native thread]; ]] 

剛開始以為是文件句柄數(shù)限制,但想到之前報的是too many open file這個錯誤,并且也把數(shù)據(jù)改大了。查資料得知一個進程的jvm進程的最大線程數(shù)為:虛擬內存/(堆棧大小*1024*1024),也就是說虛擬內存越大或堆棧越小,能創(chuàng)建的線程越多。重新設置后還是會報那這錯,按理說可創(chuàng)建線程數(shù)完全夠用了的,就想是不是系統(tǒng)的一些限制。后來在網上找到說是max user processes的問題,這個值默認是1024,這個參數(shù)單看名字是用戶最大打開的進程數(shù),但看官方說明,就是用戶最多可創(chuàng)建線程數(shù),因為一個進程最少有一個線程,所以間接影響到最大進程數(shù)。調大這個參數(shù)后就沒有報這個錯了。

解決方法:

(1)增大jvm的heap內存或降低xss堆棧大小(默認的是512K)。

(2)打開/etc/security/limits.d/90-nproc.conf,把soft nproc 1024這行的1024改大就行了。

6、集群狀態(tài)為黃色時并發(fā)插入數(shù)據(jù)報錯,錯誤如下:

  1.      
  2. [7]: index [index], type [index], id [1569133], message [UnavailableShardsException[[index][1] [4] shardIt, [2] active : Timeout waiting for [1m], request: org.elasticsearch.action.bulk.BulkShardRequest@5989fa07]] 

這是錯誤信息,當時集群狀態(tài)為黃色,即副本沒有分配。當時副本設置為2,只有一個節(jié)點,當你設置的副本大于可分配的機器時,此時如果你插入數(shù)據(jù)就有可能報上面的錯,因為es的寫一致性默認是使用quorum,即quorum值必須大于(副本數(shù)/2+1),我這里2/2+1=2也就是說要要至少插入到兩份索引中,由于只有一個節(jié)點,quorum等于1,所以只插入到主索引,副本找不到從而報上面那個錯。

解決方法:(1)去掉沒分配的副本。(2)把寫一致性改成one,即只寫入一份索引就行。

7、錯誤使用api導致集群卡死

其實這個是很低級的錯誤。功能就是更新一些數(shù)據(jù),可能會對一些數(shù)據(jù)進行刪除,但刪除時同事使用了deleteByQuery這個接口,通過構造 BoolQuery把要刪除數(shù)據(jù)的id傳進去,查出這些數(shù)據(jù)刪除。但問題是BoolQuery最多只支持1024個條件,100個條件都已經很多了,所以這樣的查詢一下子就把es集群卡死了。

解決方法:用bulkRequest進行批量刪除操作。

8、設置jvm鎖住內存時啟動警告

當設置bootstrap.mlockall: true時,啟動es報警告Unknown mlockall error 0,因為linux系統(tǒng)默認能讓進程鎖住的內存為45k。

解決方法:設置為無限制,linux命令:ulimit -l unlimited

博文出處:http://www.yoodb.com/article/display/246

責任編輯:Ophira 來源: 素文宅
相關推薦

2021-10-04 09:14:18

ElasticSear深度分頁

2019-10-08 16:05:19

Redis數(shù)據(jù)庫系統(tǒng)

2010-06-12 12:46:04

Grub Rescue

2014-07-17 00:42:18

Android應用測試方案

2023-11-29 08:35:28

群多租戶ES運維

2010-08-31 16:09:04

DIV+CSS

2010-08-26 14:00:28

CSSmargin

2024-06-24 00:30:00

2010-10-08 16:31:08

AjaxIE6

2009-07-22 17:37:06

ASP.NET Ses

2024-07-08 08:45:41

2017-08-03 09:37:35

SparkStreamKafkaDirect

2021-08-20 15:49:13

電腦主板維修

2011-03-23 16:38:28

LAMP

2009-06-30 14:22:50

Java編碼

2010-05-17 09:49:46

MySQL中文問題

2011-03-02 14:56:56

FileZilla425問題

2024-08-02 09:36:03

2010-09-02 15:18:42

CSSASP.NET

2016-09-27 21:14:53

JavaURL
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产欧美精品一区二区 | 五月激情综合网 | 国产精品99久久免费观看 | 毛色毛片免费看 | 天色综合网 | 在线天堂免费中文字幕视频 | 久草视频网站 | 色综合久久久 | 欧美黄a| 噜噜噜噜狠狠狠7777视频 | 欧美精品一区二区三区在线 | 欧洲一区二区视频 | 一区二区av | 国产二区精品视频 | 亚洲国产精品久久 | 第一福利社区1024 | 免费a级毛片在线播放 | 中文字幕亚洲一区二区三区 | 国产精品久久久久久久久免费 | 正在播放国产精品 | 亚洲综合色自拍一区 | 欧美一级二级视频 | 黄色一级大片在线观看 | 精品1区2区3区4区 | 在线播放中文字幕 | 精品视频在线播放 | 91精品国产高清一区二区三区 | 夜夜艹天天干 | 日韩中文字幕高清 | 国产免费一级一级 | 免费国产成人av | 精品免费av | 精品国产乱码久久久久久1区2区 | 日韩一区二区在线播放 | 久久久精品视频免费看 | 亚洲第一av| 日韩欧美精品在线 | 韩国欧洲一级毛片 | 亚洲www| 日本不卡一区二区三区 | 国产精品成人国产乱 |