摘自:http://www.aboutyun.com/thread-17078-1-1.html

Segment Memory

Segment不是file吗?segment memory又是什么?前面提到过,一个segment是一个完备的lucene倒排索引,而倒排索引是通过词典 (Term Dictionary)到文档列表(Postings List)的映射关系,快速做查询的。 由于词典的size会很大,全部装载到heap里不现实,因此Lucene为词典做了一层前缀索引(Term Index),这个索引在Lucene4.0以后采用的数据结构是FST (Finite State Transducer)。 这种数据结构占用空间很小,Lucene打开索引的时候将其全量装载到内存中,加快磁盘上词典查询速度的同时减少随机磁盘访问次数。

下面是词典索引和词典主存储之间的一个对应关系图:

<ignore_js_op>

说了这么多,要传达的一个意思就是,ES的data node存储数据并非只是耗费磁盘空间的,为了加速数据的访问,每个segment都有会一些索引数据驻留在heap里。因此segment越多,瓜分掉的heap也越多,并且这部分heap是无法被GC掉的! 理解这点对于监控和管理集群容量很重要,当一个node的segment memory占用过多的时候,就需要考虑删除、归档数据,或者扩容了。

怎么知道segment memory占用情况呢?  CAT API可以给出答案。

1.  查看一个索引所有segment的memory占用情况:
<ignore_js_op> 
2.  查看一个node上所有segment占用的memory总和:
<ignore_js_op>

那么有哪些途径减少data node上的segment memory占用呢? 总结起来有三种方法:

    • 删除不用的索引。
    • 关闭索引 (文件仍然存在于磁盘,只是释放掉内存)。需要的时候可以重新打开。
    • 定期对不再更新的索引做optimize (ES2.0以后更改为force merge api)。这Optimze的实质是对segment file强制做合并,可以节省大量的segment memory。

最新文章

  1. openstack中eventlet使用
  2. WordPress的body_class()函数详解
  3. java_stack
  4. 【LeetCode 236】Lowest Common Ancestor of a Binary Tree
  5. web去掉浏览器自带默认样式
  6. ASP.NET基于donetCHARTING的自动报表
  7. RedMine 版本管理工具
  8. WebAPI上传大文件
  9. Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds解
  10. Spring AOP实现声明式事务代码分析
  11. ibatis参数传递小技巧 - 疯狂的菠菜 - ITeye技术网站
  12. bzoj 4824: [Cqoi2017]老C的键盘
  13. Robot Framework学习笔记(五)------Collections 库
  14. Dubbo框架应用之(一)--服务体系
  15. Go笔记之二:一个完整的播放器示例
  16. matlab2017b
  17. 国密SM3算法在linux和windows平台结果不一致问题
  18. Extjs 项目中常用的小技巧,也许你用得着(1)
  19. 爬虫---selenium动态网页数据抓取
  20. python 安装配置(windows)

热门文章

  1. 怎样查看Eclipse是32位还是64位?
  2. c++学习笔记4,派生类的构造函数与析构函数的调用顺序(一)
  3. HTML DOM节点的增删改查
  4. Exception in thread &quot;main&quot; java.util.ConcurrentModificationException
  5. /bin/sh^M:bad interpreter: No such file or directory
  6. 关于PHP反射
  7. Mysql无法创建函数解决办法
  8. sql server 2008 去除html标签
  9. (比赛)B - Super Mobile Charger
  10. 基于python实现简单web服务器