精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Elasticsearch寫入優化記錄,從3000到8000/s

Android編程精選 ? 來源:blog.csdn.net/wmj2004/article/ ? 作者:blog.csdn.net/wmj2004 ? 2022-04-11 10:55 ? 次閱讀

背景

  • 基于elasticsearch-5.6.0

  • 機器配置:3個阿里云ecs節點,16G,4核,機械硬盤

優化前,寫入速度平均3000條/s,一遇到壓測,寫入速度驟降,甚至es直接頻率gc、oom等;優化后,寫入速度平均8000條/s,遇到壓測,能在壓測結束后30分鐘內消化完數據,各項指標回歸正常。

生產配置

這里我先把自己優化的結果貼出來,后面有參數的詳解:

elasticsearch.yml中增加如下設置

indices.memory.index_buffer_size:20%
indices.memory.min_index_buffer_size:96mb

#Searchpool
thread_pool.search.size:5
thread_pool.search.queue_size:100
#這個參數慎用!強制修改cpu核數,以突破寫線程數限制
#processors:16
#Bulkpool
#thread_pool.bulk.size:16
thread_pool.bulk.queue_size:300
#Indexpool
#thread_pool.index.size:16
thread_pool.index.queue_size:300

indices.fielddata.cache.size:40%

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

索引優化配置:

PUT/_template/elk
{
"order":6,
"template":"logstash-*",#這里配置模板匹配的Index名稱
"settings":{
"number_of_replicas":0,#副本數為0,需要查詢性能高可以設置為1
"number_of_shards":6,#分片數為6,副本為1時可以設置成5
"refresh_interval":"30s",
"index.translog.durability":"async",
"index.translog.sync_interval":"30s"

}
}

優化參數詳解

精細設置全文域: string類型字段默認會分詞,不僅會額外占用資源,而且會影響創建索引的速度。所以,把不需要分詞的字段設置為not_analyzed

禁用_all字段: 對于日志和apm數據,目前沒有場景會使用到

副本數量設置為0: 因為我們目前日志數據和apm數據在es只保留最近7天的量,全量日志保存在hadoop,可以根據需要通過spark讀回到es – 況且副本數量是可以隨時修改的,區別分片數量

使用es自動生成id: es對于自動生成的id有優化,避免了版本查找。因為其生成的id是唯一的

設置index.refresh_interval: 索引刷新間隔,默認為1s。因為不需要如此高的實時性,我們修改為30s – 擴展學習:刷新索引到底要做什么事情

設置段合并的線程數量:

curl-XPUT'your-es-host:9200/nginx_log-2018-03-20/_settings'-d'{
"index.merge.scheduler.max_thread_count":1
}'

段合并的計算量龐大,而且還要吃掉大量磁盤I/O。合并在后臺定期操作,因為他們可能要很長時間才能完成,尤其是比較大的段

機械磁盤在并發I/O支持方面比較差,所以我們需要降低每個索引并發訪問磁盤的線程數。這個設置允許max_thread_count + 2個線程同時進行磁盤操作,也就是設置為1允許三個線程

擴展學習:什么是段(segment)?如何合并段?為什么要合并段?(what、how、why)

1.設置異步刷盤事務日志文件:

"index.translog.durability":"async",
"index.translog.sync_interval":"30s"

對于日志場景,能夠接受部分數據丟失。同時有全量可靠日志存儲在hadoop,丟失了也可以從hadoop恢復回來

2.elasticsearch.yml中增加如下設置:

indices.memory.index_buffer_size:20%
indices.memory.min_index_buffer_size:96mb

已經索引好的文檔會先存放在內存緩存中,等待被寫到到段(segment)中。緩存滿的時候會觸發段刷盤(吃i/o和cpu的操作)。默認最小緩存大小為48m,不太夠,最大為堆內存的10%。對于大量寫入的場景也顯得有點小。

擴展學習:數據寫入流程是怎么樣的(具體到如何構建索引)?

1.設置index、merge、bulk、search的線程數和隊列數。例如以下elasticsearch.yml設置:

#Searchpool
thread_pool.search.size:5
thread_pool.search.queue_size:100
#這個參數慎用!強制修改cpu核數,以突破寫線程數限制
#processors:16
#Bulkpool
thread_pool.bulk.size:16
thread_pool.bulk.queue_size:300
#Indexpool
thread_pool.index.size:16
thread_pool.index.queue_size:300

2.設置filedata cache大小,例如以下elasticsearch.yml配置:

indices.fielddata.cache.size:15%

filedata cache的使用場景是一些聚合操作(包括排序),構建filedata cache是個相對昂貴的操作。所以盡量能讓他保留在內存中

然后日志場景聚合操作比較少,絕大多數也集中在半夜,所以限制了這個值的大小,默認是不受限制的,很可能占用過多的堆內存

擴展學習:什么是filedata?構建流程是怎樣的?為什么要用filedata?(what、how、why)

1.設置節點之間的故障檢測配置,例如以下elasticsearch.yml配置:

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

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

此項配置將大大緩解節點間的超時問題

后記

這里僅僅是記錄對我們實際寫入有提升的一些配置項,沒有針對個別配置項做深入研究。

擴展學習后續填坑。基本都遵循(what、how、why)原則去學習。

-End-

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    6899

    瀏覽量

    88844
  • Elasticsearch
    +關注

    關注

    0

    文章

    27

    瀏覽量

    2823

原文標題:Elasticsearch 寫入優化記錄,從3000到8000/s

文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Elasticsearch 再次開源

    Elasticsearch 和 Kibana 又可以被稱為開源了。很難表達這句話讓我有多高興。我激動得簡直要跳起來了。我們 Elastic 的所有人都是如此。開源是我的 DNA。這也是Elastic的DNA。能夠再次將 Elasticsearch 稱為開源,我感到非常高興
    的頭像 發表于 11-13 12:14 ?87次閱讀
    <b class='flag-5'>Elasticsearch</b> 再次開源

    用RK3128輸出I2S信號TAS5707,白噪音大怎么優化

    我用 RK3128 輸出 I2S 信號 TAS5707,現在白噪音大,請問有什么方法可以優化嗎? 目前整機的音量是在 RK3128里面調整,TAS5707音量是設為最大的。 謝謝。
    發表于 10-30 07:26

    大功率電源EMC測試整改:設計測試的全面優化

    深圳南柯電子|大功率電源EMC測試整改:設計測試的全面優化
    的頭像 發表于 10-23 14:19 ?243次閱讀
    大功率電源EMC測試整改:<b class='flag-5'>從</b>設計<b class='flag-5'>到</b>測試的全面<b class='flag-5'>優化</b>

    匿名瀏覽數據安全:代理IP用戶心聲全記錄

    匿名瀏覽數據安全,代理IP技術在現代網絡環境中扮演著重要角色。以下是代理IP用戶心聲的全記錄,涵蓋了其應用、優勢、挑戰及用戶心聲。
    的頭像 發表于 09-30 08:59 ?167次閱讀

    高增益八木天線:設計優化的信號增強

    深圳特信電子|高增益八木天線:設計優化的信號增強
    的頭像 發表于 09-23 09:07 ?445次閱讀

    如何向EEPROM寫入數字

    向EEPROM(Electrically Erasable Programmable Read-Only Memory,電可擦可編程只讀存儲器)寫入數字是一個相對直接的過程,但涉及多個步驟和細節。以下是一個詳細的步驟說明,旨在幫助您理解并成功向EEPROM
    的頭像 發表于 09-05 10:56 ?807次閱讀

    記錄到管理:單北斗工作記錄儀如何優化工作流程

    在這個快節奏的時代,每一分效率的提升都是企業競爭力的關鍵。繁瑣的手工記錄到智能化的數據管理,技術的飛躍正悄然改變著我們的工作方式。頂堅單北斗工作記錄儀如何成為優化工作流程的得力助手,
    的頭像 發表于 08-30 11:09 ?239次閱讀
    <b class='flag-5'>從</b><b class='flag-5'>記錄</b>到管理:單北斗工作<b class='flag-5'>記錄</b>儀如何<b class='flag-5'>優化</b>工作流程

    軟件系統的數據檢索設計

    refresh操作將mem buffer中的數據寫入新的segment并寫入os cache,然后打開本segment以供
    的頭像 發表于 08-22 14:08 ?230次閱讀
    軟件系統的數據檢索設計

    求助,關于AD8000 cir文件的導入問題求解

    LT公司下載的AD8000.CIR文件里包含三個subject,導入宏,提示有多個子電路,選擇其中的AD8000,建立模型以后,仿真不正常,應該是其他兩個子電路沒有導入 問題。 請教各位,碰到這個問題如何處理?
    發表于 08-07 07:12

    PLC云端,ZP3000系列網關助力工業數字化轉型

    ZP3000系列遠程控制網關是一款專為滿足現代工業自動化和遠程監控需求而設計且功能強大的通訊模塊。它的多接口設計和靈活配置能力,使得它能夠適應多種復雜的工業通信和監控場景。以下是關于ZP3000系列
    的頭像 發表于 07-30 14:23 ?515次閱讀
    <b class='flag-5'>從</b>PLC<b class='flag-5'>到</b>云端,ZP<b class='flag-5'>3000</b>系列網關助力工業數字化轉型

    KV-8000/7000/5000/3000/1000系列指令參考手冊

    電子發燒友網站提供《KV-8000/7000/5000/3000/1000系列指令參考手冊.pdf》資料免費下載
    發表于 06-25 14:15 ?0次下載

    紫光展銳UNISOC S8000用科技助力步步高學習機S8智慧教育

    近日,步步高推出全新學習機S8,內置紫光展銳芯片平臺-UNISOC S8000,依托展銳芯片的強勁性能和步步高多年積累的教育資源優勢,步步高學習機S8讓青少年能更高效、更精準地掌握知識,養成學習
    的頭像 發表于 06-05 18:14 ?2793次閱讀

    EMI測試整改:問題識別到有效優化

    深圳比創達電子EMC|EMI測試整改:問題識別到有效優化
    的頭像 發表于 05-06 14:02 ?527次閱讀
    EMI測試整改:<b class='flag-5'>從</b>問題識別到有效<b class='flag-5'>優化</b>

    怎樣才能使用范圍(0x8004-0xBFFC)進行I2C寫入呢?

    我們怎樣才能使用范圍(0x8004-0xBFFC)進行 I2C 寫入呢? 我們可以直接將寫入的數據復制范圍 (0x8000-0xBFFC) 嗎?或者需要配置其他寄存器?
    發表于 01-23 08:13

    淺談代碼優化與過度設計

    本文記錄了作者“代碼優化“過度設計”的典型思考過程,這過程中涉及了很多Java的語法糖及設計模式的東西,很典型,能啟發思考,遂記錄下來
    的頭像 發表于 01-19 10:05 ?520次閱讀
    淺談代碼<b class='flag-5'>優化</b>與過度設計