首页 文章

Solrcloud表现问题

提问于
浏览
1

我正在从传统的Master-Slave模型转换到SolrCloud . 我正在使用Solr 4.4并且已经设置了2个分片,每个分片有1个副本 . 我有3个动物园管理员合奏 . 所有节点都在AWS EC2实例上运行 . 碎片在m1.xlarge上并共享一个zookeeper实例(安装在单独的卷上) . 为每个solr实例分配6 gb内存 .

我在索引中有大约1000万个文档 . 使用以前的独立模型,查询平均大约100毫秒 . 到目前为止,SolrCloud查询响应非常糟糕 . 查询响应时间超过1000毫秒,经常达到2000毫秒 . 我预计会因为额外的服务器,网络延迟等而出现一些激增,但这种差异实在令人费解 . 两种情况下的硬件类似,除了SolrCloud节点的一对共享zookeeper的事实 . m1x.large I / O很高,因此也不应该成为瓶颈 .

与旧设置的另一个区别是我正在使用新的CloudSolrServer类,它具有3个zookeeper参考用于负载 balancer . 但我不认为它有任何重大影响,因为从Solr管理查询面板执行的查询确认了缓慢 .

以下是我的一些配置设置:

提交频率

<autoCommit> 
        <maxTime>30000</maxTime> 
        <openSearcher>false</openSearcher> 
</autoCommit> 

<autoSoftCommit> 
        <maxTime>1000</maxTime> 
</autoSoftCommit>

布尔子句: ``

<maxBooleanClauses>1024</maxBooleanClauses>

缓存设置:

<filterCache class="solr.FastLRUCache" size="16384" initialSize="4096" 
autowarmCount="4096"/> 

<queryResultCache class="solr.LRUCache" size="16384" initialSize="8192" 
autowarmCount="4096"/> 

<documentCache class="solr.LRUCache" size="32768" initialSize="16384" 
autowarmCount="0"/> 

<fieldValueCache class="solr.FastLRUCache" size="16384" 
autowarmCount="8192" showItems="4096" /> 

<enableLazyFieldLoading>true</enableLazyFieldLoading> 

<queryResultWindowSize>200</queryResultWindowSize> 

<queryResultMaxDocsCached>400</queryResultMaxDocsCached>

查询侦听器:

<listener event="newSearcher" class="solr.QuerySenderListener"> 
        <arr name="queries"> 
                <lst><str name="q">line</str></lst> 
                <lst><str name="q">xref</str></lst> 
                <lst><str name="q">draw</str></lst> 
        </arr> 
        </listener> 
                <listener event="firstSearcher" 
class="solr.QuerySenderListener"> 
                        <arr name="queries"> 
                                <lst><str name="q">line</str></lst> 
                                <lst><str name="q">draw</str></lst> 
                                <lst><str name="q">line</str><str 
name="fq">language:english</str></lst> 
                                <lst><str name="q">line</str><str 
name="fq">Source2:documentation</str></lst> 
                                <lst><str name="q">line</str><str 
name="fq">Source2:CloudHelp</str></lst> 
                                <lst><str name="q">draw</str><str 
name="fq">language:english</str></lst> 
                                <lst><str name="q">draw</str><str 
name="fq">Source2:documentation</str></lst> 
                                <lst><str name="q">draw</str><str 
name="fq">Source2:CloudHelp</str></lst> 
                        </arr> 
</listener> 

<maxWarmingSearchers>2</maxWarmingSearchers>

请求处理程序:

code>
<requestHandler name="/cloudhelp" class="solr.SearchHandler"> 
                <lst name="defaults"> 
                        <str name="echoParams">explicit</str> 
                        <float name="tie">0.01</float> 
                        <str name="wt">velocity</str> 
                        <str name="v.template">browse</str> 
                        <str 
name="v.contentType">text/html;charset=UTF-8</str> 
                        <str name="v.layout">layout</str> 
                        <str name="v.channel">cloudhelp</str> 

                        <str name="defType">edismax</str> 
                        <str name="q.alt">*:*</str> 
                        <str name="rows">15</str> 
                        <str 
name="fl">id,url,Description,Source2,text,filetype,title,LastUpdateDate,PublishDate,ViewCount,TotalMessageCount,Solution,LastPostAuthor,Author,Duration,AuthorUrl,ThumbnailUrl,TopicId,score</str> 
                        <str name="qf">text^1.5 title^2 IndexTerm^.9 
keywords^1.2 ADSKCommandSrch^2 ADSKContextId^1</str> 
                        <str name="bq">Source2:CloudHelp^3 
Source2:youtube^0.85</str> 
                        <str 
name="bf">recip(ms(NOW,PublishDate),3.16e-11,1,1)^2.0</str> 
                        <str name="df">text</str> 


                        <str name="facet">on</str> 
                        <str name="facet.mincount">1</str> 
                        <str name="facet.limit">100</str> 
                        <str name="facet.field">language</str> 
                        <str name="facet.field">Source2</str> 
                        <str name="facet.field">DocumentationBook</str> 
                        <str name="facet.field">ADSKProductDisplay</str> 
                        <str name="facet.field">audience</str> 


                        <str name="hl">true</str> 
                        <str name="hl.fl">text title</str> 
                        <str name="f.text.hl.fragsize">250</str> 
                        <str name="f.text.hl.alternateField">ShortDesc</str> 


                        <str name="spellcheck">true</str> 
                        <str name="spellcheck.dictionary">default</str> 
                        <str name="spellcheck.collate">true</str> 
                        <str name="spellcheck.onlyMorePopular">false</str> 
                        <str name="spellcheck.extendedResults">false</str> 
                        <str name="spellcheck.count">1</str> 
                </lst> 
                <arr name="last-components"> 
                        <str>spellcheck</str> 
                </arr> 
        </requestHandler>

我注意到的一件事是queryresultcache命中率非常低,不确定我们的查询总是那么独特 . 我正在使用edismax并且有一个收件人(ms(NOW,PublishDate),3.16e-11,1,1)^ 2.0,这可以贡献吗?

对于这篇长篇文章感到抱歉,但是我在这里努力解决这个问题,特别是当查询在具有类似硬件和网络的主从环境中正常运行时 .

任何指针都将受到高度赞赏 .

  • 谢谢

1 回答

  • 1

    谢谢你的注意:

    唯一的区别是Solrcloud有4台服务器,之前只有1台从服务器 .

    默认情况下,SolrCloud在活动节点之间分配请求并整理结果 . 我的建议是使用Document and Query Routing among shard,它将提供最佳性能 .

相关问题