Elasticsearch 性能调优
?主要修改參數
最近幾天的主要工作是對于我們當前業務場景下,完成性能調優,主要修改了以下參數的配置,寫入性能由最初的8k+,到現在基本達到10K,此時的性能瓶頸已經不在ES本身,主要受限于磁盤IO。
"refresh_interval" : "120s", "index.translog.interval": "60s", "index.translog.durability": "async", "index.translog.sync_interval": "30s", "index.merge.scheduler.max_thread_count": "1", //進行merge操作的最大線程數,對于FS的環境上該值應該為4, "index.merge.policy.max_merged_segment": "1gb", //默認5G "index.merge.policy.floor_segment": "50mb"?
結論如下:
進行這次驗證部署兩個實例,磁盤性能經過多次驗證,取的平均值,大概寫入約70M/s,單挑doc的字節書大概在400-430左右。
機器配置:16U32G,但是給ES的配置內存為4G(由于當前機器部署的其他應用較多)
10K寫入量大約需要5+個核。
我們使用批量寫的方式進行寫入,一次寫入10K條數據。單次幾乎是4M的數據量。
?
配置說明
refresh_interval:周期的大小,決定了此時doc被檢索到的周期,主要是來確定事實實時的參數,如果并不要求足夠的實時性,其實,完全可以關閉,在doc全部刷新到磁盤后仍然是可以被檢索的
index.translog.flush_threshold_ops:當發生多少次操作時進行一次flush。默認是 unlimited。
index.translog.flush_threshold_size:當translog的大小達到此值時會進行一次flush操作。默認是512mb。
index.translog.flush_threshold_period:在指定的時間間隔內如果沒有進行flush操作,會進行一次強制flush操作。默認是30m。
index.translog.interval:多少時間間隔內會檢查一次translog,來進行一次flush操作。es會隨機的在這個值到這個值的2倍大小之間進行一次操作,默認是5s。
?
index.merge.scheduler.max_thread_count: segment進行merge的線程數,計算方式Math.max(1, Math.min(4, Runtime.getRuntime().availableProcessors() / 2)),如果你的磁盤不是SSD盤,就可以將其調整為1
index.merge.policy.max_merged_segment:最大可以merge的segment,默認5G,將其改為1G,來節約IO。
index.merge.policy.floor_segment:小于這個值的segment,均會被優先進行merge操作,將其調大,最大限度的一次多完成merge操作。
轉載于:https://www.cnblogs.com/woniu4/p/9279259.html
總結
以上是生活随笔為你收集整理的Elasticsearch 性能调优的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DrawerLayoutDemo【侧边栏
- 下一篇: eclipse编码设置