多人同时并发上传,造成write.lock,如何解决?

TonyLian 2010-03-25
多人同时并发上传,造成write.lock,如何解决?

这个问题应该很普遍的,本版搜了一下,没有得到答案呀。

有没有解决过此问题的同学呢?
chineselio 2010-03-25
简便的处理办法:做一个队列,依次从中取数据处理。有新数据过来就塞队列里等。
imjl 2010-03-25
并发上传和搜索有什么关系?
TonyLian 2010-03-25
我做了这么一个尝试:

因为我是把Lucene架在spring上的。接收上传并写索引的服务,是一个sping的bean,也就是说它是一个被sping依赖注入的单例。

我把IndexWrite从原来的局部变量,提为成员变量,然后对他做单例模式,即
if(indexWrite == null){
  indexWrite = new IndexWrite(...);
}


这样就保证了IndexWriter是单例的,5个人做了并发测试,目前没有问题。

不知道,这路子对不对?
TonyLian 2010-03-25
imjl 写道
并发上传和搜索有什么关系?


搜索是只读的,可以并发。

上传既然是公开出来的功能,自然也会有并发的时候。但IndexWriter是独占IO资源的,但文档中说它是线程安全的,所以做了上面的尝试。

imjl 2010-03-25
是不是上传的信息要马上搜索到?

如果是,你按照2楼的,上传完直接告诉他正在做索引。服务器端定时更新索引。

如果更新要求达不到,参考 http://imjl.iteye.com/blog/610036 


strayly 2010-03-26
使用compass
TonyLian 2010-03-31
strayly 写道
使用compass


能说的细致点吗?
Global site tag (gtag.js) - Google Analytics