Java solr 1.4.0和4.6.0之间的性能问题
我将solr版本从1.4.0更新到4.6.0,现在我们面临几个性能问题 a) 如果我使用嵌入式版本,速度会非常慢 b) 使用http,我有以下平均时间: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 {
- 1.4:151ms
- 4.6:301ms
用于测试的代码,向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的性能
假设您在将solr服务器升级到4.x之后重新编制了索引,并且使用的是4.x版本的solrJ。您确定要查询相同的requestHandler吗?检查solrconfig.xml中的默认参数,以防万一,
fl
可以更改3k行文档上的规则!性能问题的原因是在1.4中,您手中只有比萨饼。在4.6节中,你将得到你手中所需的比萨配料。所以,很明显,性能会有所不同。删除这些浇头的行动,并检查您可能会得到更少的时间。谢谢!我试试你的建议