开心六月综合激情婷婷|欧美精品成人动漫二区|国产中文字幕综合色|亚洲人在线成视频

    1. 
      
        <b id="zqfy3"><legend id="zqfy3"><fieldset id="zqfy3"></fieldset></legend></b>
          <ul id="zqfy3"></ul>
          <blockquote id="zqfy3"><strong id="zqfy3"><dfn id="zqfy3"></dfn></strong></blockquote>
          <blockquote id="zqfy3"><legend id="zqfy3"></legend></blockquote>
          打開APP
          userphoto
          未登錄

          開通VIP,暢享免費電子書等14項超值服

          開通VIP
          生產(chǎn)環(huán)境使用elasticsearch遇到的一些問題以及解決方法(不斷更新)
          1.由gc引起節(jié)點脫離集群
               因為gc時會使jvm停止工作,如果某個節(jié)點gc時間過長,master ping3次(zen discovery默認(rèn)ping失敗重試3次)不通后就會把該節(jié)點剔除出集群,從而導(dǎo)致索引進(jìn)行重新分配。
          解決方法:
          (1)優(yōu)化gc,減少gc時間。(2)調(diào)大zen discovery的重試次數(shù)(es參數(shù):ping_retries)和超時時間(es參數(shù):ping_timeout)。后來發(fā)現(xiàn)根本原因是有個節(jié)點的系統(tǒng)所在硬盤滿了。導(dǎo)致系統(tǒng)性能下降。

          2.out of memory錯誤
               因為默認(rèn)情況下es對字段數(shù)據(jù)緩存(Field Data Cache)大小是無限制的,查詢時會把字段值放到內(nèi)存,特別是facet查詢,對內(nèi)存要求非常高,它會把結(jié)果都放在內(nèi)存,然后進(jìn)行排序等操作,一直使用內(nèi)存,直到內(nèi)存用完,當(dāng)內(nèi)存不夠用時就有可能出現(xiàn)out of memory錯誤。
          解決方法:
          (1)設(shè)置es的緩存類型為Soft Reference,它的主要特點是據(jù)有較強的引用功能。只有當(dāng)內(nèi)存不夠的時候,才進(jìn)行回收這類內(nèi)存,因此在內(nèi)存足夠的時候,它們通常不被回收。另外,這些引 用對象還能保證在Java拋出OutOfMemory 異常之前,被設(shè)置為null。它可以用于實現(xiàn)一些常用圖片的緩存,實現(xiàn)Cache的功能,保證最大限度的使用內(nèi)存而不引起OutOfMemory。在es的配置文件加上index.cache.field.type: soft即可。
          (2)設(shè)置es最大緩存數(shù)據(jù)條數(shù)和緩存失效時間,通過設(shè)置index.cache.field.max_size: 50000來把緩存field的最大值設(shè)置為50000,設(shè)置index.cache.field.expire: 10m把過期時間設(shè)置成10分鐘。

          3.無法創(chuàng)建本地線程問題
          es恢復(fù)時報錯: 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ù)改大了。查資料得知一個進(jìn)程的jvm進(jìn)程的最大線程數(shù)為:虛擬內(nèi)存/(堆棧大小*1024*1024),也就是說虛擬內(nèi)存越大或堆棧越小,能創(chuàng)建的線程越多。重新設(shè)置后還是會報那這錯,按理說可創(chuàng)建線程數(shù)完全夠用了的,就想是不是系統(tǒng)的一些限制。后來在網(wǎng)上找到說是max user processes的問題,這個值默認(rèn)是1024,這個參數(shù)單看名字是用戶最大打開的進(jìn)程數(shù),但看官方說明,就是用戶最多可創(chuàng)建線程數(shù),因為一個進(jìn)程最少有一個線程,所以間接影響到最大進(jìn)程數(shù)。調(diào)大這個參數(shù)后就沒有報這個錯了。
          解決方法:
          (1)增大jvm的heap內(nèi)存或降低xss堆棧大?。J(rèn)的是512K)。
          (2)打開/etc/security/limits.d/90-nproc.conf,把soft    nproc     1024這行的1024改大就行了。

          4.集群狀態(tài)為黃色時并發(fā)插入數(shù)據(jù)報錯
          [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]]
          這是錯誤信息,當(dāng)時集群狀態(tài)為黃色,即副本沒有分配。當(dāng)時副本設(shè)置為2,只有一個節(jié)點,當(dāng)你設(shè)置的副本大于可分配的機(jī)器時,此時如果你插入數(shù)據(jù)就有可能報上面的錯,因為es的寫一致性默認(rèn)是使用quorum,即quorum值必須大于(副本數(shù)/2+1),我這里2/2+1=2也就是說要要至少插入到兩份索引中,由于只有一個節(jié)點,quorum等于1,所以只插入到主索引,副本找不到從而報上面那個錯。
          解決方法:(1)去掉沒分配的副本。(2)把寫一致性改成one,即只寫入一份索引就行。

          5.設(shè)置jvm鎖住內(nèi)存時啟動警告
          當(dāng)設(shè)置bootstrap.mlockall: true時,啟動es報警告Unknown mlockall error 0,因為linux系統(tǒng)默認(rèn)能讓進(jìn)程鎖住的內(nèi)存為45k。
          解決方法:設(shè)置為無限制,linux命令:ulimit -l unlimited

          6.錯誤使用api導(dǎo)致集群卡死
          其實這個是很低級的錯誤。功能就是更新一些數(shù)據(jù),可能會對一些數(shù)據(jù)進(jìn)行刪除,但刪除時同事使用了deleteByQuery這個接口,通過構(gòu)造BoolQuery把要刪除數(shù)據(jù)的id傳進(jìn)去,查出這些數(shù)據(jù)刪除。但問題是BoolQuery最多只支持1024個條件,100個條件都已經(jīng)很多了,所以這樣的查詢一下子就把es集群卡死了。
          解決方法:用bulkRequest進(jìn)行批量刪除操作。

          7.org.elasticsearch.transport.RemoteTransportException: Failed to deserialize exception response from stream
          原因:es節(jié)點之間的JDK版本不一樣
          解決方法:統(tǒng)一JDK環(huán)境

          參考資料:
          本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
          打開APP,閱讀全文并永久保存 查看更多類似文章
          猜你喜歡
          類似文章
          ElasticSearch部署架構(gòu)和容量規(guī)劃
          Elasticsearch JAVA VM配置詳解
          老司機(jī)生產(chǎn)實踐經(jīng)驗:線上系統(tǒng)的JVM內(nèi)存是越大越好嗎?
          一次看完28個關(guān)于ES的性能調(diào)優(yōu)技巧
          從400 節(jié)點Elasticsearch集群的運維中,我們總結(jié)了這些經(jīng)驗
          Elasticsearch 生產(chǎn)環(huán)境集群部署最佳實踐
          更多類似文章 >>
          生活服務(wù)
          分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
          綁定賬號成功
          后續(xù)可登錄賬號暢享VIP特權(quán)!
          如果VIP功能使用有故障,
          可點擊這里聯(lián)系客服!

          聯(lián)系客服