请您先登录,才能继续操作

[lucene] 大家帮我看一下,象我们这样情况该怎么改善来提高lucene性能?

strayly 2010-04-09
我的情况:
我们是一台服务器:cpu 2个4核,内存8G,硬盘15000转,目前pv10万左右,数据100多万,索引文件1G多,我分了三个,web服务使用的是tomcat6,使用ehcache做的缓存。
现在负载开始有些高,不知道大家有没有什么好的建议。
象这个服务器,不加硬件还可以承载更多流量吗
如果以后加服务器,怎么设计比较合理?
imjl 2010-04-10
当前瓶颈是什么?

缓存命中率如何,更新策略是什么,索引和存储是否分离?

服务器配置不错,,

设计这样的系统,,就是细化所有步骤,然后优化,具体情况只能具体分析
strayly 2010-04-10
不知道如何查看ehcache的命中率  
不知道什么原因,这两天负载好一些了。

当时感觉磁盘压力比较大,
chcahe配置主要分两块,一块是根据用户搜索条件,缓存结果,我缓存了前3页,设置了半小时(索引是半小时跟新一次)
另一块是内容详细页,这个缓存时间设置的比较长,大约几个小时吧,主要以硬盘存储为主,内存中设置了很少一部分。
索引中只放了一部分字段,像详细内容,我都是以XML文件形式,分散存储在硬盘上的,不然索引文件会变的巨大,搜索的时候搜索出结果,然后在根据ID从硬盘上找出需要显示的XML文件。
现在是内存占用的比较多,可用的内存很少了,所以配置缓存的时候,内存中只设置了一小部分,大部分都是设置在硬盘上的。这也是导致磁盘压力大的原因吧

还有我们几百万个xml文件存在硬盘上,虽然分了目录,但对硬盘压力也是比较大吧,我想如果用Berkeley DB 存储这些文件,会不会好一些,比如我分几十或几百个BDB来存放这些数据,比以文件形式分散在目录中会好吗?

还有就是以后流量继续增加了,加服务器的话,怎么设计比较合理? 把索引文件单独放在一台服务器上,搜索用另一台,用RMI调用,可行吗,效率怎样?

不知道大家在大流量网站中应用是怎样的,是否可以分享一下
luckaway 2010-04-10
如果开销主要是花在检索数据上,那肯定是程序有问题了!

一个G的索引数据其实算比较小的,当然这也跟索引结构有关系。但是只有一个G,不管索引结构什么样应该都没啥问题的。

如果是jvm内存不够,可以考虑用mecached缓存,至少它不会占用jvm内存。

存放Berkeley DB不如存放到mecachedb,mecachedb也是持久存储的。
Berkeley DB是嵌入式的,要做成分布式,还要自己封装一层的。

mecachedb=dbd+memcached,它已经帮你封装好了!


imjl 2010-04-10
汗,感觉你们做得比较乱。

请求到缓冲拿到数据就返回,否则就要进行新搜索。缓冲命中率越高,新搜索就越少。

至于ehcache怎么看命中率,我不知道,我不会java。

xml堆放数据,管理不是很方便。你可以用数据库或者NoSQL来存放。好处脚趾头也知道

大流量目前我没碰到,但我相信你只要把磁盘内存网络合理使用,数据合理切分,足以应付你的大流量问题。








strayly 2010-04-11
昨天用Berkeley DB在本地环境中测试了一下,比直接xml文件分散存储,提高很多
请求10万次查询访问,Berkeley DB不到1分钟,快的时候20秒就完了,而直接读取xml文件总花费10分钟
mecachedb我还没有用到,看它好像是分布的时候好些
看来对于海量小文件,还是用bdb,memcachedb 等嵌入是数据库存储好
mniz 2010-04-29
索引文件1G,感觉好大哈,才100多万数据

按照你说的,应该可以调优吧,程序里面调

如果过滤器用的多的话,可以用缓存过滤器的那个类,CRW..什么的,忘记名字了,不知道你用了没,感觉用上那个,效果会好很多
slqprrx 2011-12-15
怎么会到1G呢?只索引不存储,我记得100w条也就100多M,存文章。

还有存单个文章的确是要用nosql数据库最方便。memcachedb也算是nosql。不知道你用xml文件是怎么想的。你存一堆xml文件,存取速度还不如直接从关系数据库里取呢。

缓存还是移到memcache里,只有特常用的再存在本机里。

这样的结构会把你的系统的性能竖直的切开,各方面分担。不然全在一个机器上就废了。
Global site tag (gtag.js) - Google Analytics