elasticsearch索引数据存储模型

微凉离别意 15天前   阅读数 19 0

1. 配置方式

默认情况下,ES会根据操作系统选择最优的存储方式,可以通过配置elasticsearch.yml或者创建索引期间来指定:

1、index.store.type: niofs

2、索引级别setting设置

PUT /my_index
{
   "settings": {
     "index.store.type": "niofs"
   }
}

2. 文件存储类型

https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-store.html

3. mmapfs和niofs适用场景

3.1 mmpafs、noifs堆外内存使用情况

ES mmapfs模式下,随着查询多次进行,ES的Lucene文件会逐渐缓存到堆外内存,这部分内存是可以被其他进程抢占的

ES从mmapfs切换至niofs,Lucene文件没有缓存到堆外内存,niofs模式下这部分内存不会无限增长

查看方法:

1、查看ES进程PID

2、将内存映射文件/proc/PID/smaps 拷贝到 /opt/ 路径下

3、由于top命令中RES表示进程实际占用的内存大小,实际上,把smaps文件中所有Rss累加便是RES值的大小:grep Rss smaps | awk 'BEGIN {sum = 0;} {sum += $2} END{print sum}'

4、根据第3步,过滤出Lucene文件占用的内存:

grep -A 5 '索引集群名称关键字' smaps > lucene_smaps

grep Rss lucene_smaps | awk 'BEGIN {sum = 0;} {sum += $2} END{print sum}'

3.2 ES mmpafs、noifs查询性能对比

经过大量实验对比,得到如下结论

1、ES mmapfs模式下模糊查询和分组聚合查询性能更优,niofs模式下过滤查询和范围查询性能更优。其中,niofs模式下模糊查询性能下降幅度很大

2、在资源紧张时刻,推荐使用niofs模式,查询性能均优于mmapfs


注意:本文归作者所有,未经作者允许,不得转载

全部评论: 0

    我有话说: