国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ElasticSearch--優(yōu)化寫入速度的方法--修改配置

這篇具有很好參考價值的文章主要介紹了ElasticSearch--優(yōu)化寫入速度的方法--修改配置。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

原文網(wǎng)址:ElasticSearch--優(yōu)化寫入速度的方法--修改配置_IT利刃出鞘的博客-CSDN博客

簡介

說明

? ? ? ? 本文介紹如何優(yōu)化ElasticSearch的寫入性能。

相關(guān)網(wǎng)址

ElasticSearch--寫入數(shù)據(jù)的流程(原理)_IT利刃出鞘的博客-CSDN博客

方案說明

? ? ? ? 下邊的方案,有的比較推薦改動,有的不推薦改動。不推薦的原因一般是得不償失,比如:數(shù)據(jù)容易丟失,查詢效率變低等。

tranlog flush(推薦)

改為異步刷新(推薦)

說明

????????從ES 2.x開始,translog默認的持久化策略為:每個請求都“flush”(寫入磁盤)。對應(yīng)配置項如下:

index.translog.durability: request

????????這是影響 ES 寫入速度的最大因素。但是這樣寫操作比較可靠。如果系統(tǒng)可以接受一定概率的數(shù)據(jù)丟失(例如:數(shù)據(jù)寫入主分片成功,尚未復(fù)制到副分片時,主機斷電。由于數(shù)據(jù)既沒有刷到Lucene,translog也沒有刷盤,恢復(fù)時translog中沒有這個數(shù)據(jù),數(shù)據(jù)丟失),則調(diào)整translog持久化策略。

優(yōu)化方案

1.異步寫磁盤

index.translog.durability: async

減少刷盤次數(shù)(不推薦)

說明

????????每30分鐘或當translog達到一定大小(由index.translog.flush_threshold_size控制,默認512mb), ES會觸發(fā)一次flush操作,此時ES會先執(zhí)行refresh操作將buffer中的數(shù)據(jù)生成segment,然后調(diào)用lucene的commit方法將所有內(nèi)存中的segment 寫(fsync)到磁盤。

優(yōu)化方案

1.加大translog刷盤間隔時間。默認為5s,不可低于100ms。

index.translog.sync_interval: 120s

2.加大translog刷盤的最大觸發(fā)值。默認值為512MB。

index.translog.flush_threshold_size: 1024mb

設(shè)置為async表示translog的刷盤策略按sync_interval配置指定的時間周期進行。

增大indexing buffer(推薦)

說明

????????indexing buffer是為doc建立索引時使用的,當緩沖滿時會生成一個新的segment并觸發(fā)刷盤操作。這是除refresh_interval刷新索引外,另一個生成新segment的機會。

????????默認值不太夠用,對于大量寫入的場景也顯得有點小。

? ? ? ? 設(shè)置的這個index buffer大小,是所有的shard公用的,那些特別活躍的shard會更多的使用這個buffer。對于每個shard來說,最多給512mb,因為再大性能就沒什么提升了。

優(yōu)化方案

1.index_buffer_size(默認為10%,即:JVM堆大小的10%)

indices.memory.index_buffer_size=20%

2.min_index_buffer_size(默認為48m)

indices.memory.min_index_buffer_size=48MB

3.max_index_buffer_size(默認為無限制,一般無需改動

indices.memory.min_index_buffer_size=xxx

增大線程池(推薦)

相關(guān)網(wǎng)址:ElasticSearch--線程池(ThreadPool)--使用/設(shè)置_IT利刃出鞘的博客-CSDN博客

說明

????????大量的寫入考慮使用bulk請求。

????????Bulk寫入索引的過程屬于計算密集型任務(wù),應(yīng)該設(shè)置使用固定大小的線程池,來不及處理的任務(wù)放入隊列。線程池最大線程數(shù)量應(yīng)配置為CPU核心數(shù)+1(這也是默認設(shè)置),可以避免過多的上下文切換。隊列大小可以適當增加,但要嚴格控制大小,過大的隊列會導(dǎo)致較高的GC壓力,并可能導(dǎo)致FGC頻繁發(fā)生。

優(yōu)化方案

????????設(shè)置search、write、index、merge的隊列長度。線程池大小保持默認就好;一般修改隊列大小。

# Search pool
#thread_pool.search.size: 5
thread_pool.search.queue_size: 100

# Write pool
# thread_pool.bulk.size: 16
thread_pool.bulk.queue_size: 300

# Index pool
# thread_pool.index.size: 16
thread_pool.index.queue_size: 300

# 這個參數(shù)慎用!強制修改cpu核數(shù),以突破寫線程數(shù)限制
# processors: 16

減小fielddata(推薦)

說明

????????在ES中,text類型的字段使用一種叫做fielddata的查詢時內(nèi)存數(shù)據(jù)結(jié)構(gòu)。當字段被排序,聚合或者通過腳本訪問時這種數(shù)據(jù)結(jié)構(gòu)會被創(chuàng)建。它是通過從磁盤讀取每個段的整個反向索引來構(gòu)建的,然后存存儲在java的堆內(nèi)存中。

  fielddata默認是不開啟的。Fielddata可能會消耗大量的堆空間,尤其是在加載高基數(shù)文本字段時。一旦fielddata已加載到堆中,它將在該段的生命周期內(nèi)保留。此外,加載fielddata是一個昂貴的過程,可能會導(dǎo)致用戶遇到延遲命中。這就是默認情況下禁用fielddata的原因。如果嘗試對文本字段進行排序,聚合或腳本訪問,將看到以下異常:

  “Fielddata is disabled on text fields by default. Set fielddata=true on [your_field_name] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory.”

????????如果要對分詞的field執(zhí)行聚合操作,必須將fielddata設(shè)置為true:

POST /test_index/_mapping/test_type 
{
  "properties": {
    "test_field": {
      "type": "text",
      "fielddata": true
    }
  }
}

優(yōu)化方案

????????默認是沒有限制的,無限制可能導(dǎo)致頻繁的OOM,限制使用則有可能導(dǎo)致頻繁的驅(qū)逐(eict和relaod)、大量的IO性能損耗,內(nèi)存碎片,gc。

indices.fielddata.cache.size: 20%

也可以設(shè)置為絕對內(nèi)存比如16g等。超出限制,則會清除內(nèi)存已有的fielddata。
?

增大refresh interval(不推薦)

說明

????????默認情況下索引的refresh_interval為1秒,這意味著數(shù)據(jù)寫1秒后就可以被搜索到,進而滿足Elasticsearch的近實時查詢。

????????每次索引的refresh會產(chǎn)生一個新的Lucene段,會導(dǎo)致頻繁的segment merge行為,造成大量的磁盤io和內(nèi)存占用,影響效率。如果不需要這么高的實時性,應(yīng)該增大索引refresh周期。

優(yōu)化方案

1.增大索引refresh周期。(默認為1s)

index.refresh_interval: 30s

段合并(不推薦)

說明

????????segment merge操作對系統(tǒng)I/O和內(nèi)存占用都比較高,merge行為由Lucene控制。相關(guān)配置如下:

?index.merge.scheduler.max_thread_count (default Math.max(1, Math.min(4, Runtime.getRuntime().availableProcessors()/2)))

index.merge.policy.*

merge策略有三種:

  1. tiered(默認策略):分層合并策略,該策略將大小相似的段放在一起合并,當然段的數(shù)量會限制在每層允許的最大數(shù)量之中。
  2. log_byte_size:字節(jié)大小對數(shù)合并策略,將創(chuàng)建由多個大小處于對數(shù)運算后大小在指定范圍索引組成的索引。
  3. loc_doc:文檔數(shù)量對數(shù)合并策略,與log_byte_size策略類似,只是將以段的字節(jié)大小來計算的方式換成了文檔數(shù)量。

????????索引創(chuàng)建時合并策略就已確定,不能更改,但是可以動態(tài)更新策略參數(shù)。如果堆棧經(jīng)常有很多merge,則可以考慮適當增加index.merge.policy.segments_per_tier配置的值(該配置指定了每層分段的數(shù)量,取值越小則最終segment越少,因此需要merge的操作越多,可以考慮適當增加此值)。同時可以考慮適當降低index.merge.policy.max_merged_segment的值(指定了單個segment的最大容量)。

index.merge.policy.segments_per_tier (default 10,其應(yīng)該大于等于index.merge.policy.max_merge_at_once。)
index.merge.policy.max_merged_segment (default 5GB)

優(yōu)化方案

1.修改最大線程數(shù)

????????最大線程數(shù)max_thread_count的默認值是一個比較理想的值,如下:

Math.max(1, Math.min(4, Runtime.getRuntime().availableProcessors() / 2))
  1. 如果節(jié)點配置的cpu核數(shù)較高,merge占用的資源可能會偏高,影響集群的性能。
  2. 如果只有一塊硬盤并且非 SSD,則應(yīng)該把它設(shè)置為1,因為在旋轉(zhuǎn)存儲介質(zhì)上并發(fā)寫,由于尋址的原因,只會降低寫入速度。
  3. 如果Elasticsearch寫路徑配置多個磁盤,可以在磁盤數(shù)的范圍內(nèi)結(jié)合集群的負載取一個合適的值。

可以通過下面的命令調(diào)整某個index的merge過程的并發(fā)度:

index.merge.scheduler.max_thread_count:2

2.修改策略參數(shù)

????????索引創(chuàng)建時合并策略就已確定,不能更改,但可以動態(tài)更新策略參數(shù)。如果堆棧經(jīng)常有很多merge,則可以嘗試調(diào)整以下策略配置:

配置1:

index.merge.policy.segments_per_tier

????????該屬性指定了每層分段的數(shù)量,默認為10,取值越小則最終segment越少,因此想要merge的操作更多,可以考慮適當增加此值。其應(yīng)該大于等于index.merge.policy.max_merge_at_once(默認為10)。

配置2:

index.merge.policy.max_merged_segment

????????指定了單個segment的最大容量,默認為5GB,大于這個大小的segment,不用參與歸并(forcemerge 除外)。為了減少參與merge的segment的數(shù)量,減少磁盤IO以及內(nèi)存占用,可以考慮適當降低此值,此場景適用于按天或者時間段建index的場景,當index變?yōu)橹蛔x后使用forcemerge進行強制歸并,在提高檢索和Reindex效率的同時,減少內(nèi)存的占用。

節(jié)點探查時間(推薦)

官網(wǎng)網(wǎng)址:Zen Discovery | Elasticsearch Guide [6.6] | Elastic

說明

? ? ? ??大量寫入的場景,會占用大量的網(wǎng)絡(luò)帶寬,很可能使節(jié)點之間的心跳超時。并且默認的心跳間隔也相對過于頻繁(1s檢測一次)。

優(yōu)化方案

discovery.zen.fd.ping_timeout: 60s
discovery.zen.fd.ping_retries: 6
discovery.zen.fd.ping_interval: 30s

配置

默認值

描述

ping_interval

1秒

節(jié)點ping的頻率。

ping_timeout

3秒

等待節(jié)點響應(yīng)的超時時間。

ping_retries

3

ping失敗/超時重試次數(shù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-620031.html

到了這里,關(guān)于ElasticSearch--優(yōu)化寫入速度的方法--修改配置的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 基于MFC的圖書館圖書管理系統(tǒng) VC++操作Excel文檔的方法,讀取,查詢,寫入,修改,刪除

    VS2017加裝MFC以及創(chuàng)建第一個MFC程序_趙滿剛的博客-CSDN博客 MFC讀取Excel文件+數(shù)據(jù)處理+寫入Excel_土豪gold的博客-CSDN博客 VS2013 MFC連接Access數(shù)據(jù)庫(ADO)詳細版實例操作(含Combo Box讀取數(shù)據(jù)庫內(nèi)容,附源碼)_土豪gold的博客-CSDN博客_mfc連接access數(shù)據(jù)庫 MFC 導(dǎo)入EXCEL到數(shù)據(jù)庫_weixin_338

    2024年02月06日
    瀏覽(22)
  • 基于MFC的圖書館圖書管理系統(tǒng) VC++操作Excel文檔的方法,讀取,查詢,寫入,修改,刪除

    VS2017加裝MFC以及創(chuàng)建第一個MFC程序_趙滿剛的博客-CSDN博客 MFC讀取Excel文件+數(shù)據(jù)處理+寫入Excel_土豪gold的博客-CSDN博客 VS2013 MFC連接Access數(shù)據(jù)庫(ADO)詳細版實例操作(含Combo Box讀取數(shù)據(jù)庫內(nèi)容,附源碼)_土豪gold的博客-CSDN博客_mfc連接access數(shù)據(jù)庫 MFC 導(dǎo)入EXCEL到數(shù)據(jù)庫_weixin_338

    2024年02月06日
    瀏覽(23)
  • 項目實戰(zhàn)——參數(shù)配置化Spark將Hive表的數(shù)據(jù)寫入需要用戶名密碼認證的ElasticSearch(Java版本)

    項目實戰(zhàn)——參數(shù)配置化Spark將Hive表的數(shù)據(jù)寫入需要用戶名密碼認證的ElasticSearch(Java版本)

    項目實戰(zhàn)——將Hive表的數(shù)據(jù)直接導(dǎo)入ElasticSearch ?? 此篇文章不用寫代碼,簡單粗暴,但是相對沒有那么靈活;底層采用MapReduce計算框架,導(dǎo)入速度相對較慢! 項目實戰(zhàn)——Spark將Hive表的數(shù)據(jù)寫入ElasticSearch(Java版本) ?? 此篇文章需要Java代碼,實現(xiàn)功能和篇幅類似,直接

    2023年04月08日
    瀏覽(22)
  • 安裝elasticsearch8.9.0及修改配置

    安裝es流程 打開文件,添加以下行 vim /etc/sysctl.conf vm.max_map_count=262144 重啟生效 sysctl -p 創(chuàng)建用戶 useradd es passwd es 修改es目錄所屬用戶 chown -R es:es /opt/elasticsearch-8.9.0 如果內(nèi)存不足,可以修改es的初始化內(nèi)存和Max內(nèi)存,修改文件/opt/elasticsearch-8.9.0/config/jvm.options -Xms8g -Xmx8g 運行e

    2024年02月11日
    瀏覽(18)
  • Elasticsearch配置優(yōu)化

    Elasticsearch配置優(yōu)化

    以下的優(yōu)化基礎(chǔ)是安裝的 Elasticsearch 版本為 7.17.7,同時jdk版本為 1.8.321 1、jvm參數(shù)優(yōu)化 ??這里說的jvm參數(shù)調(diào)優(yōu),是指elasticsearch安裝目錄下的jvm.options配置,如下圖所示: ??這里調(diào)整的內(nèi)容主要是調(diào)整垃圾回收的收集器,將默認的cms + parNew 垃圾回收器,替換為G1 垃圾回收

    2024年02月10日
    瀏覽(14)
  • Elasticsearch(ES)配置及優(yōu)化

    在Elasticsearch中,索引的大小和存儲能力取決于多個因素,包括文檔大小、索引的分片數(shù)、硬件規(guī)格、查詢負載和其他因素。 索引和分片配置:索引和分片的數(shù)量和配置會對查詢并發(fā)性能產(chǎn)生影響。如果索引和分片的數(shù)量太少,可能會導(dǎo)致查詢性能不佳,而如果數(shù)量過多,可

    2023年04月08日
    瀏覽(15)
  • ElasticSearch服務(wù)端及客戶端的密碼修改配置(可實現(xiàn))

    ? ?前提:我的ElasticSearch版本為7.5.2,是支持密碼管理的。對于不支持的es版本可能需求查看一下其他的配置方式。然后我的Java項目是基于Spring Boot 2.3.4版本進行構(gòu)建的,基于yml修改elastic的配置無法自動注入生效,故進行了手動對es的客戶端用戶/密碼屬性進行了填充。 1.首先我

    2024年02月06日
    瀏覽(15)
  • yolov5 優(yōu)化方法(四)修改bbox損失函數(shù)(補充EIOU,SIOU)

    yolov5 優(yōu)化方法(四)修改bbox損失函數(shù)(補充EIOU,SIOU)

    【參考文檔】江大白的yolo解析 后面會給出我的完整代碼,先來分段看看! 轉(zhuǎn)換成這種格式: 這個應(yīng)該都很熟了 clamp inf:無窮大 -inf:負無窮 out:輸出,默認即可,不用設(shè)定 在 yolov5的使用中,應(yīng)該是截斷掉小于0的部分 torch.clamp 在正式進入各種iou之前 cw :最小外包矩形寬度

    2024年02月06日
    瀏覽(28)
  • Elasticsearch在部署時,對Linux的設(shè)置有哪些優(yōu)化方法?

    部署Elasticsearch時,可以通過優(yōu)化Linux系統(tǒng)的設(shè)置來提升性能和穩(wěn)定性。以下是一些常見的優(yōu)化方法: 1.文件描述符限制 Elasticsearch需要大量的文件描述符來處理數(shù)據(jù)和連接,所以確保調(diào)整系統(tǒng)的文件描述符限制。可以通過修改 /etc/security/limits.conf 文件來增加限制,例如: 2.虛

    2024年02月12日
    瀏覽(35)
  • ElasticSearch之kibana5.4版本安裝及配置教程&kibana修改語言為中文教程

    ElasticSearch之kibana5.4版本安裝及配置教程&kibana修改語言為中文教程

    前言:最近項目在使用es時,使用elastic-head來查看數(shù)據(jù)對客戶來說并不友好,因此需要安裝kibana(es的數(shù)據(jù)可視化工具)。過程中遇到很多問題,網(wǎng)上記錄的也比較少,特此記錄下。 由于項目使用的es版本比較低5.4.*,因此本文安裝kibana是基于kibana 5.4.1版本。 6.7版本之前的ki

    2024年01月25日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包