我有一小组查询和实体,即使性能非常差,我只是想知道我可以做些什么技巧和配置来提高性能?
注意我正在使用Solr 4.1。
答案 0 :(得分:6)
您应该尝试在导入期间最小化提交次数。即使您在向Solr添加文档时没有定期提交,Solr也会根据solrconfig.xml autoCommit设置进行自动提交:
<autoCommit>
<maxDocs>10000</maxDocs>
<maxTime>15000</maxTime>
<openSearcher>false</openSearcher>
</autoCommit>
同时增加maxDocs
和maxTime
,看看你是否获得更好的速度。 (maxTime
以毫秒为单位,因此默认设置仅为15秒,对于批量导入而言非常低。)
您甚至可以在批量导入期间尝试禁用自动提交,并在添加所有文档后发出一个提交命令。如果这不会导致Solr出现内存不足的异常,那么这是您可以获得的最佳速度。
如果您正在进行RDBMS导入,那么我建议使用JOIN尽可能多地捕获字段并最小化子实体的数量,因为每个子实体都会打开与DB的单独连接。由于您是从mongo导入的,因此不适用于您。您可以通过创建包含Solr所需的所有数据的新mongo集合进行试验,在数据导入器中保留单个实体,并查看它是否提高了导入速度。