Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java solr 1.4.0和4.6.0之间的性能问题_Java_Performance_Solr_Solrj_Solr4 - Fatal编程技术网

Java solr 1.4.0和4.6.0之间的性能问题

Java solr 1.4.0和4.6.0之间的性能问题,java,performance,solr,solrj,solr4,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 {

我将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);
    }

}
公共类主{
私有静态HttpSolrServer服务器;
公共静态void main(字符串[]args)引发异常{
字符串url=”http://foo.bar/myIndex";
服务器=新的HttpSolrServer(url);
对于(int i=0;i<10;i++){
搜索();
}
}
public static void search()引发异常{
SolrQuery SolrQuery=新的SolrQuery();
setQuery(“foo:bar”);
solrQuery.setStart(0);
solrQuery.setRows(20);
//质疑
很久以前=新的GregorianCalendar().getTimeInMillis();
server.query(solrQuery);
long after=new gregorianalendar().getTimeInMillis();
System.out.println(后-前);
}
}

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

CPU、磁盘和内存需求取决于在实现Solr时所做的许多选择(文档大小、文档数量和检索到的点击数等等)

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

  • 将Zookeeper(如果使用)移动到另一个磁盘。如果索引很大,那么从Solr到Zookeeper的I/O调用数量将降低程序集性能
  • 增加Zookeeper超时时间
  • 记录gc时间,我发现Zookeeper盒子上的暂停时间高达20秒
  • 使用建议从中优化堆

  • 假设您在将solr服务器升级到4.x之后重新编制了索引,并且使用的是4.x版本的solrJ。您确定要查询相同的requestHandler吗?检查solrconfig.xml中的默认参数,以防万一,
    fl
    可以更改3k行文档上的规则!性能问题的原因是在1.4中,您手中只有比萨饼。在4.6节中,你将得到你手中所需的比萨配料。所以,很明显,性能会有所不同。删除这些浇头的行动,并检查您可能会得到更少的时间。谢谢!我试试你的建议