关闭

solr的optimize操作导致性能骤降

标签: solroptimize
1924人阅读 评论(0) 收藏 举报
分类:
    问题描述:之前的一个项目中使用kettle将数据库中的数据抽取到solr中,最初数据量很少的情况下速度很快,但是在在抽取到几十万条数据以后,存到solr的速度骤降,变成每秒只有几条的龟速。
    我们将数据存到solr中的代码大概是下面这样:
        Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
docs.add(doc1);
docs.add(doc2);
........
server.add(docs);
server.optimize();
     最后发现问题就出在最后的optimize这句上面,去掉后存到solr的速度稳定在1000条/S。


    optimize到底干了什么? 该如何使用?
        查资料才发现,optimize其实是个很重量级的操作,执行optimize操作后solr会进行索引数据的合并来优化查询性能,如果索引数据很大,optimize则会花费很多的时间,如果你在批量提交文档后每次都进行optimize操作,无疑提交速度会越来越慢,最后甚至导致solr不再响应你的提交请求。另外,如果你的服务是主从模式,那么对master的optimize还会导致整个索引块同步到replica上,影响就更加可想而知了。

optimize操作可以优化查询性能,所以还是有用的,可以在服务不忙的时候在solr自带的控制台手动执行optimize操作,也可以写个定时任务来完成。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:55604次
    • 积分:1036
    • 等级:
    • 排名:千里之外
    • 原创:44篇
    • 转载:0篇
    • 译文:0篇
    • 评论:50条
    最新评论