[solr ] SolrCluod(Solr 4.0) 查询经常延时10秒返回

hupr 2013-11-02
我们使用Solr4.0搭建了一套搜索引擎,架构很简单:4台SOLR服务器,2个Shard,1个zookeeper.


在开发环境和测试环境都没有问题。

但是部署到生产环境后发现,每天首次查询内容源、或者过几分钟再去查询都会有10秒左右的延迟.

测试发现,在SOLR服务器上查询1个Shard的内容无延迟;只有同时查询多个Shard才会有此问题。



经过几天的排查,发现问题就在查询各分片的内容、合并的地方。

下面代码第4行会卡住等待。

view sourceprint?
01
private ShardResponse take(boolean bailOnError){
02
    while(pending.size()>0){
03
       try{
04
          Future<ShardResponse> future=CompletionService.take();
05
          ......
06
       }
07
       ......
08
    }
09
    return null;
10
}
调试后发现,take方法在一次查询中会被调用3次,前2次分别到各分片查询内容,最后一次是合并2次查询的结果。

上面提到,如果在1台Solr服务器上查询1个分片的内容,速度很快,无延迟。所以初步分析,应该是第3次调用take方法合并查询结果时有等待。



可是,接下来我该怎么做呢?大神们给点建议啊~~ 谢谢!
Global site tag (gtag.js) - Google Analytics