(一:原理3)elasticsearch的segment详解

(一:原理3)elasticsearch的segment详解

es的segment详解

1:segment介绍

服务器总内存除过给jvm配置的其余都给了lucene,占用page cache内存,page cache保存对文件数据segment的缓存。

free -g可查看内存使用,es节点只有es服务,基本cache就是缓存的segment

segment : 每个shard分片是一个lucene实例,每个分片由多个segment组成!!每个segment占用内存,文件句柄等。

1.1:flush总结

1:es的各个shard会每个30分钟进行一次flush操作。

2:当translog的数据达到某个上限的时候会进行一次flush操作。

3:flush后清除translog

1.2:segment配置

写入时segment的大小和数量由refresh_interval决定

POST /index/_settings

{“refresh_interval”: “10s”}

2:segment影响

2.1:segment增多的影响

一个分片一个lucene实例(多个segment)。lucene内部的数据是由一个个segment组成的,es写入经过了refresh间隔,将该时间段写入的全部数据refresh成一个segment,segment多了之后会进行merge成更大的segment,默认最大5G,所有会产生过多的segment。

2.2:segment占用查看

查看segment总的情况:get cat/segment

查看节点的segment总占用内存情况(sm):GET _cat/nodes?v&h=ip,ram.percent,sm

某查看索引的segment:get index/segment:

1:对内存系统影响

每个segment的catch内存是随着gc不会释放掉的!!!!所以过大过多的segnment会导致系统运行没有内存,进而导致查询超时等等。

2:数据查询影响

lucene查询时会遍历每个segment完成,所以过多的segment会导致查询速度下降,没有内存甚至导致超时

3:segment优化

优化的目的是释放catch的内存!

1:删除不用的索引。

delete index

2:关闭索引(文件仍然存在于磁盘,只是释放掉内存)。需要的时候可以重新打开。

post index/_close

post index/_open

3:force merge强制合并

force merge本质是对分片上的segment强制合并,节省大量的memory.

该操作占用大量的io,避免在热索引(正写入数据的索引)进行操作。

合并一般包括api合并和手动命令合并

手动:post index/_forcemerge?max_num_segments=1

相关推荐

Excel 表格大小调整
365betvip

Excel 表格大小调整

⌛ 06-29 👁️ 7394
微信聊天记录保存多久?全方位管理与备份指南
使用友盟分享和登陆以及使用时要注意的坑