论坛首页 Java版 企业应用

T级数据下 lucene 性能 还好吗?

浏览 10504 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2008-06-04
aihua,

我觉得你的数据对lucene确实多了,我建议你加入lucene的maillist,Lucene的核心都在那里而且回复你的email非常及时。
   
0 请登录后投票
最后更新时间:2008-06-05
报告一下最新情况

主要改进方面:
  1.采用最新程序 2.3.1->2.3.2
  2.取消RAMDirectory,只采用IndexWriter,通过setMaxBufferedDocs 来进行缓存。
  3. auto-commit 设置为 false,setMaxBufferedDocs 设置为 500
  4. 采用addIndexesNoOptimize ,合并是不进行优化。
 
以上有些是基本优化策略,只是以前不知道,没有采用 汗。。

程序还在运行中,已经运行了15个小时

  目前统计数据如下
  cpu 基本 10-50% 波动比较大
  内存持续攀升 2->4g
  索引数据大小 144g
  平均每分钟生成索引 12m
  索引率(原始数据与索引数据比)    60%
 
  目前程序运行稳定
   
0 请登录后投票
最后更新时间:2008-06-05
IO方面不会出大的问题,问题应该在“海量小文件上”。
增加内存应该对性能有帮助
更换操作系统和文件系统可能会有进一步的帮助(不过貌似代价太大了)
另外建议分成多个部分独立来做,并且管理这些任务的程序作个独立的程序可能会对某些情况下有效
   
0 请登录后投票
最后更新时间:2008-06-06
等待你的结果。
   
0 请登录后投票
最后更新时间:2008-06-06
aihua 写道
非常感谢您的解答!
roger51 写道
我测试过的数据量大概是117G左右。几个建议
1,首先在你的txt作索引前,先把txt需要处理的字段整理出来放到一个queue里,让处理txt和索引txt的功能分离开,这样处理起来比较快,数据来源比较直接,不用在解析了

分开读取文件和索引文件的功能吗?可以简单的理解问读取和写入功能分开吗?
不是很理解,由于全txt需要做检索,所以目前是读取一个文件,索引一个文件。

roger51 写道

2,对索引文件比如txt的content区域内的数据可以截取一部分或者只索引不存储,高亮显示的时候可以用位置及偏移量来求得

这个目前只索引不存储txt的content内容。但是客户要求最终检索能够见到到行(txt的那个行),所以我实际上是做了按行进行索引。

roger51 写道


3,索引需要调整大小,最好控制下,比如每个索引文件只要几M,按照folder的名称或者创建日期来切分,

这里说的索引文件是指我的原始数据吗?目前测试的数据都是小于1m的,文件数量很多。
还要测试单个文件超过1g的情况。
切分是指什么?我现在发现原始数据folder下如果文件个数过多,直接影响处理速度。


roger51 写道

4,查询的时候可以按照你说的方法来处理,在加上一个reader的cache比较好,

了解。

roger51 写道

5,你的内存挺大的,不过放入太多文件是不太好,目前我们用的是5M写入一次这个可以根据你的实际情况来处理

目前我采用 writer.setRAMBufferSizeMB(500),实际测试78g,内存时候总在2.7g左右,偏低。下次打算加大。
你说的5m写一次应该也是类似的参数吧。

roger51 写道

6,内存方面感觉你描述上有内存泄露,检查下代码,比如流,list map等等清空了没有


上个版本确实有问题,尤其是后期内存管理失败。

roger51 写道

7,分布式是软件产品的需要,不是性能的修要,就目前的情况来看,就算你分布式提高也不大,

了解。

roger51 写道

8,cpu在我作处理的时候基本在90%以上,利用率比较高,希望你在检查下,看看为什么没有充分利用
简单意见看看有帮助吗,


你这个比较厉害,我基本上cpu都是40-60%,也许由于我的cpu多一些,8个,感觉瓶颈主要在io上。



1,分开读取的意思,比如写个treadpool对不同的folder进行读取和处理成你作索引时要用到的javabean对象,然后放到queue里,索引直接从queue里拿javabean对象就好了,这样效率会大大提升的
3,切分就是把你的原始foler,进行划分,这部分要看你的逻辑,由treadpool的工作任务类来负责
5,500M有点过大了,不知道运行中会不会有问题,比较担心,在加大未必是好事
6,充分利用你的硬件配置,发挥它的最大作用,要是太多把内存给我根,呵呵
   
0 请登录后投票
最后更新时间:2008-06-06
在给你加两个网站的链接关于lucene性能测试的有些比较直观的数据
http://www.usit.uio.no/it/vortex/arbeidsomrader/metadata/lucene/performance-tests.html

http://lucene.apache.org/java/docs/benchmarks.html
   
0 请登录后投票
最后更新时间:2008-06-07
建议,先进行220G的文件索引,然后设增量再往被索引盘中逐步添加剩余的文件
   
0 请登录后投票
最后更新时间:2008-06-23
楼主进展如何了?可以分享一下么?
   
0 请登录后投票
最后更新时间:2008-06-23
可以多线程索引
   
0 请登录后投票
最后更新时间:2008-07-11
泡 泡 写道
建议关注Hadoop吧,Hadoop是MapReduce的Java实现,现在是Yahoo的超过20个工程师的全职Commiter,这次网侠大会问他们开发工程师,他们说现在Yahoo有超过5000台机器在跑Hadoop,包括搜索引擎的索引建立。


0.17了还是不肯发1.0,呵呵.....
   
0 请登录后投票
论坛首页 Java版 企业应用

跳转论坛:
JavaEye推荐