niofsに基づいてセグメント力マージおよびストアタイプ - 最適化プロセスElasticsearch OOM一度覚え

 

プリファード、著者のマシン環境を示す(しないのバインドいじめソリューションに関する環境講演):CPU 32コア、メモリ、128G、非ソリッドステートドライブ:RAID0(4T * 6)、単一ノード、1800Gに700Gのデータの量、指標15億億21へ。青のプロピレンのSSDよりもキノコストリート、クラスタの断片化の成人は、余裕がありません。

:ソース記入してくださいhttps://www.cnblogs.com/NaughtyCat/p/elasticsearch-OOM-optimize-story.htmlを  

ビジネスシナリオ:

7日間保存指数は400Gの日を持っています。私たちは、OOMを見つけ、そして時々ESを再起動します。ときにインデックスがときより500G以上、ESは30分〜1時間程度、すべてのフラグメントをロードするために再起動します。

余談、ES OOMが生成され   .hprof (著者以下に示すように、ファイル[CoderBaby] ):

jhatが OOMヒープダンプファイルを解析し、特定のコマンドのような: jhat -port-7401 -J&LT Xmx4G java_pid19546.hprof

 

ソリューション:

  • ファイルストレージの種類を変更し、より少ないメモリ

セットストレージタイプ: "NIFOS"、即ち"index.store.type": "niofs" (オリジナルの"mmapfs"のため、参照附属書2)。mmapfs  -インデックスがメモリにマップされ、niofs - 同時マルチスレッディングNIOの方法は、インデックスファイルを読み込みます。

効果:600Gインデックス、インデックス5日間について、OOMを持っていませんでした。しかし、インデックスいったんダイに、7に増加しました。JSTATコマンド、即ち:6811 -gcutil STAT (ES PID)以下に示すように、ES JVMを参照してください。

O:パーセントとして旧スペースの利用スペースの現在の容量(のの古いスペース占有)。79 Oまで、オリジナルのストレージタイプにまで出かける「mmapfs」O簡単に100に上昇し、。

  • オープンインデックスの数を減らし、一時的に未使用のインデックスを閉じました

閉じる指数(再び開くために必要なときにファイルがまだ、ディスク上にちょうど解放されたメモリを存在します)。オープンセットインデックスパラメータ: "__es.maxPermanentlyOpenIndices":4(最大開口指数:7〜4)。

  •  ヒープメモリの増設

ヒープサイズを設定する、つまり、30Gまで15Gから増加:-Xms30g -Xmx30g (注:DOは最大物理メモリ超えない50%の

  • forcemerge

index.merge.scheduler.max_thread_count:マージを設定するスレッドの最大数。SSD - デフォルト最大   Math.max、(1、Math.min(4 、Runtime.getRuntime()availableProcessors()/ 2)。) 従来の回転ディスク- 1に設定されています

著者のマシン、単一のマージスレッド、300G指標時間:7時間

优化效果: term 单条件查询,查询时间从10秒多提高到3秒多,索引减少约%2.85,减少4000多万,具体如下表:

index total_segments_berfore_merge total_segments_after_merge query_IP_after(seconds)   query_IP_after(seconds)  decrease(count/percentage)
pcap_flow-2019-12-09  1412695374 137249867 10 3.6 40196703/ %2.845

 

可通过命令查看,分片的情况

force merge的restful API:

curl -X POST "localhost:9200/pcap_flow-2019-12-11/_forcemerge?max_num_segments=2"

说明:

1)max_num_segments, 设置最大segement数量,数量越小,查询速度提高越明细,但merge耗时越长

2)全部merge,不加索引ID,则如下:

curl -X POST "localhost:9200/_forcemerge?"

3)串行merge,如果同时merge多个,后面的会被阻塞,知道第一个merge完成为止

4)restful api 查看_segments,如下:

curl -X GET "localhost:9200/_cat/segments?v&pretty"

效果如下图:

 

题外话,如果贵司银子多,可以集群分片,搞SSD,否则只有结构优化,这一招。

 

 附:

1)官网  index force merge说明: https://www.elastic.co/guide/en/elasticsearch/reference/7.4/indices-forcemerge.html

2) ES 存储类型: https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-store.html

3)merge 线程数: https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-merge.html

4)磁盘阵列RAID: https://zh.wikipedia.org/wiki/RAID

5)关于索引合并的统计分析: http://openskill.cn/article/375

*****************************************************************************************************

精力有限,想法太多,专注做好一件事就行

  • 我只是一个程序猿。5年内把代码写好,技术博客字字推敲,坚持零拷贝和原创
  • 写博客的意义在于打磨文笔,训练逻辑条理性,加深对知识的系统性理解;如果恰好又对别人有点帮助,那真是一件令人开心的事

*****************************************************************************************************

おすすめ

転載: www.cnblogs.com/NaughtyCat/p/elasticsearch-OOM-optimize-story.html