solr 1.4.0和4.6.0之间的性能问题

时间:2014-02-04 22:45:09

标签: java performance solr solrj solr4

我将我的solr版本从1.4.0更新到4.6.0,现在我们遇到了几个性能问题。

a)如果我使用嵌入式版本,那就很慢了

b)使用http,我有平均时间:

  • 1.4:151ms
  • 4.6:301ms

c)我看到JavaBinCodec从版本1更改为2.任何人都知道这可能是问题吗?

注1:由于服务器的热身,我多次测试,第一次丢弃。

注2:返回的文件非常大(XML视图中的3k行,每个文档)

任何帮助都会被贬低。


用于测试的代码,显示代码为solr 4.6

public class Main {

    private static HttpSolrServer server;
    public static void main(String[] args) throws Exception {
        String url = "http://foo.bar/myIndex";
        server = new HttpSolrServer(url);
        for (int i = 0; i < 10; i++) {
            search();
        }
    }
    public static void search() throws Exception {
        SolrQuery solrQuery = new SolrQuery();
        solrQuery.setQuery("foo:bar");
        solrQuery.setStart(0);
        solrQuery.setRows(20);

        // QUERY
        long before = new GregorianCalendar().getTimeInMillis();
        server.query(solrQuery);
        long after = new GregorianCalendar().getTimeInMillis();
        System.out.println(after - before);
    }

}

1 个答案:

答案 0 :(得分:1)

Solr 4.6在Java 6或更高版本上运行。使用Java 7时,Solr建议至少安装Update 1,并且不鼓励-XX JVM选项的实验用法。最新版本的JVM可能会影响Solr的性能。您可以在下面的链接中概述由于JVM而导致的Solr问题。

http://wiki.apache.org/lucene-java/JavaBugs

CPU,磁盘和内存要求基于实现Solr时所做的许多选择(文档大小,文档数量和检索到的命中数等等)。

但是,如果您使用的是Zookeeper,则可以尝试多种方法来提高Solr的性能。

  1. 将Zookeeper(如果使用)移动到另一个磁盘。如果索引很大,那么从Solr到Zookeeper的I / O调用次数将降低程序集性能。
  2. 增加Zookeeper超时时间。
  3. 记录gc次,我在Zookeeper盒子上发现了最多20秒的停顿。
  4. 使用建议从http://wiki.apache.org/solr/ShawnHeisey#GC_Tuning调整堆。