Solr/Lucene MMapDirectory的小细节
来源:互联网 发布:同望预算软件 编辑:程序博客网 时间:2024/06/07 20:12
小时候测试 HdfsDirectory 时,把directoryFactory改成 solr.HdfsDirectoryFactory。经测试发现HdfsDirectoryFactory并不适合我,又改成 solr.MMapDirectory。As you know缺省情况下Solr用的solr.NRTCachingDirectoryFactory(至少4.2之后)。
假如没有比较实时的 softCommitTracker,MMapDirectory或是NrtCachingDiectory并不会有太大的影响。当比较实时的索引之后,在MMapDirectory情况下,会产生大量的小索引文件。其实,这个是一件很恐怖的事,会造成大量的索引合并,然后给IO造成巨大的压力。特别是单Node里有多个Shard时,此时就非常明显了。
IO一直报警,那就得找原因找方案了。看了一下索引文件目录出现大量的小文件,与我配置的IndexConfig出入太大。然后检查commitTracker配置和mergePolicy,也就是说一开始并没有意识到DirectoryFactory。只是commitTracker和mergePolicy都没有问题,所以只有DirectoryFactory会影响了。
注意:
你当然知道commitTracker分hard commit和soft commit即CommitTracker, SoftCommitTracker。那你知道这其中的差异吗?
你会说,它们的软提交写内存,硬提交写硬盘。其实不完全对。
在FSDirectory下,它们的区别是flush和force的区别。
只有在NrtCachingDirectory下,它们才有写内存,和写磁盘的区别。
还有一点,只有hard commit才会冲刷UpdateLog即tlog。
到这里,你可能觉得这事就结束,其实还没有。
NrtCachingDirectoryFactory默认DEFAULT_MAX_MERGE_SIZE_MB=4
, DEFAULT_MAX_CACHED_MB=48
。即是单索引大于4Mb就会直接写磁盘,最多存48Mb的索引在内在上。当然,如果你的索引冲刷不是很快的情况下,这个配置没问题。但由于我一个softCommitTracker,会产生6Mb左右的索引,所以我又把maxMergeSize=12mb
, maxCachedSize=64mb
。
至此,完全结束了,IO不再告警了。
- Solr/Lucene MMapDirectory的小细节
- lucene MMapDirectory的使用
- 在64位平台上的Lucene,应该使用MMapDirectory
- lucene/solr的缺点
- solr/lucene和nutch/lucene的区别
- Lucene/solr的评分公式
- Solr和Lucene的关系
- Lucene与Solr的比较
- Lucene和Solr的区别
- Lucene与Solr的比较
- Lucene与Solr的比较
- lucene和solr的区别
- 请在 64位 系统上使用 lucene MMapDirectory
- solr/lucene
- Solr、Lucene
- lucene&solr
- Lucene&Solr(之二)-索引库CRUD、Solr的安装
- Lucene/Solr打分机制的分析
- 两个 Activity 之间跳转时必然会执行的是哪几个方法
- 说说 Activity,Intent,Service 是什么关系
- Android利用微信SDK分享到微信教程,回调分享结果错误解决和注意点
- PHP限制上传文件的大小(修改PHP.ini)
- flex中将一个数组分割成多个小数组
- Solr/Lucene MMapDirectory的小细节
- ACM课程总结
- mysql日志详细解析
- 唐诗辑注 —— 辛夷坞、南园十三首、问六十九
- 初学者对于I/O流的小节-上
- 【Unity优化】关于优化方面的整理
- sphinx api 搜索 Sphinx 2.2.10-release
- 二叉树的中序遍历、递归实现、非递归实现、层次遍历、二叉树的应用,来来来,都有都有
- 顺丰BSP接口PHP开发注意事项